標籤:style class blog code http tar
- Controller類繼承自ControllerBase類, ControllerBase類實現了IController介面.
- ControllerBase類實現了Exceute方法, 當URL路由匹配到Controller後,就會執行Excecute方法進行Controller的處理.
- ControllerBase類還定義了抽象的ExcecuteCore方法,當Execute執行完畢後就會執行ExecuteCore方法.
- ControllerBase類還定義了三個核心的屬性 TempData, ViewData.
- Controller繼承了ControllerBase外, 還實現了一系列的Filter介面.
- asp.net mvc應用程式URL都是映射到Controller中的某個Action中,由Action處理邏輯並返回View.
- Controller中的Public方法都被當做是Action方法, Action方法通常會返回ActionResult結果.
- 預設情況Action方法的名稱就是這個Action的Action名, Action名就是Route中匹配Action方法的URL部分. 例如:Home/Index Index就是Action名.
- Action方法預設匹配同名的Action, 但也可以自己定義,通過ActionNameAttribute使Action方法匹配指定名稱的Action.
- Action方法還可以通過AcceptVerbsAttribute讓其匹配Action指定的HttpMethod.(見下面程式碼片段)
- 如果要為一個Public方法設定為不是Acion方法,就需要為這個Public方法指定NonAction的Attribute.
- Aciton方法中的參數必須和Route中指定的參數名稱相同, 當訪問URL時, URL參數部分值會自動傳遞給Action方法的參數.
- Controller的邏輯處理中可能會需要用到通用的部分,比如為使用者列印錯誤資訊操作, 那麼我們可以自己通過繼承Controller,實現自己的基類.
Action方法返回ActionResult類型的結果。ASP.NET MVC為我們提供了幾種ActionResult的實現,如下:
當然我們也可以自定一個我們的ActionResult返回給用戶端,例如一個RssResult。
14.Controller的邏輯處理中可能會需要用到通用的部分,比如為使用者列印錯誤資訊操作, 那麼我們可以自己通過繼承Controller,實現自己的基類.
[AcceptVerbs("GET")]public ActionResult Setting(){ throw new NotImplementedException();} [ActionName("Setting"), AcceptVerbs("POST")]public ActionResult SaveSetting(){ throw new NotImplementedException();}