随笔 - 153  文章 - 1  评论 - 1722  阅读 - 215万

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基类暴露RequestResponse对象在action方法中使用。这两个对象和HttpRequest,HttpResponse有相同的意思。有一点重要的不同就是,控制器类中的Request和Response对象是基于System.Web.IHttpRequest和System.Web.IHttpResponse接口的。这个接口是他们很容易来创建mock对象,使它很容易为控制器类创建单元测试。

处理未定义的Action名
Controller基类通过调用HandleUnknowAction方法来处理一个未知的action方法名。默认是实现Controller基类返回一个HTTP 404状态码。
你可以为URL中引用到的action但实际上并不存在该action方法的情况设置默认的处理程序。下面的示例显示了重写HandleUnknowAction方法并重定向到一个"serch"页面:

public void override 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);
}
posted on   Q.Lee.lulu  阅读(2427)  评论(3编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
< 2008年3月 >
24 25 26 27 28 29 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示