Controller是MVC中比較重要的一部分。幾乎所有的業務邏輯都是在這裡進行 處理的,並且從Model中取出數據。在ASP.NET MVC Preview5中,將原來的 Controller類一分為二,分為了Controller類和ControllerBase類。Controller 類繼承自ControllerBase類,而ControllerBase實現是了IController接口。
ControllerBase實現了IController接口的Execute方法,在Route匹配到 Controller之後,就會調用Execute方法來進入Controller的處理。這裡還定義了 一個抽象的方法ExecuteCore方法,該方法會在Execute方法的最後被調用。 ControllerBase還定義了三個核心的屬性。我們在後面會詳細討論TempData和 ViewData。
Controller類除了繼承自ControllerBase類以外,還實現了好 幾個Filter接口,Filter我們在後面再詳細討論。
public abstract class Controller : ControllerBase, IActionFilter, IAuthorizationFilter, IDisposable, IExceptionFilter, IResultFilter{ }
Controller類還定 義很多有用的方法,我們新建的Controller都必須繼承自這個Controller類。例 如我們新建一個AdminController:
public class AdminController : Controller
{
}
Action方法
下面談一下在Controller中比較重要的Action方法。在ASP.NET MVC中URL 都是映射到Controller中的某個Action中,然後由匹配的Action來處理我們的業 務邏輯並返回view的。
Controller中的public的方法都被當作是Action方 法。Action方法通常返回一個ActionResult的結果。例如我們為前面的 AdminController定義一個Setting的Action方法,用於設置Blog的一些基本參數 :
public class AdminController : Controller
{
public ActionResult Setting()
{
throw new NotImplementedException();
}
}