1. 程式人生 > >AP.NET MVC : 控制器 和 控制器Actions

AP.NET MVC : 控制器 和 控制器Actions

ASP.NET includes the following types for MVC development:

  • IController. 這個類定義了 controller 類的約定。
    Controller. 這是一個controller 基類,提供基本的MVC處理。

  • Note
    要對控制器和控制器action進行安全訪問你可以使用 PrincipalPermissionAttribute 類.

所有的controller類都要以“Controller”作為命名的字尾,而且都必需繼承自"Controller"基類。

MVC framework(MVC2)認為所有的公共方法都是action方法。所以,如果你你的控制器類中包含一個不是action方法的public方法,你必需用NonActionAttribute特性來標記它。

Action方法引數
預設情況下,action方法的引數是從請求的資料集合中檢索的。資料集合包括 data,query string,cookie中的名/值對。
controller基類定位action方法,並基於RouteData例項來決定那些引數用於該方法。如果引數值不能被解析,引用型別或者可空型別則傳遞NULL值,否則丟擲一個異常。

有好幾種途徑在控制類中的action方法中來獲取URL引數值。Controller基類暴露Request

Response物件在action方法中使用。這兩個物件和HttpRequest,HttpResponse有相同的意思。有一點重要的不同就是,控制器類中的Request和Response物件是基於System.Web.IHttpRequest和System.Web.IHttpResponse介面的。這個介面是他們很容易來建立mock物件,使它很容易為控制器類建立單元測試。

處理未定義的Action名
Controller基類通過呼叫HandleUnknowAction方法來處理一個未知的action方法名。預設是實現Controller基類返回一個HTTP 404狀態碼。
你可以為URL中引用到的action但實際上並不存在該action方法的情況設定預設的處理程式。下面的示例顯示了重寫HandleUnknowAction方法並重定向到一個"serch"頁面:

publicvoidoverride HandleUnknownError(string action) {
    
// Redirect to a search page where the unknown action is 
    
// the search query. Determine when to show the search page 
    
// based on the result of calling a ShouldShowSearch() method.if (ShouldShowSearch(action) ==true
    {
        RedirectToAction(
"search", action );
        
return;
    }
    
base.HandleUnknownError(action);
}