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