ASP.NET MVC学习笔记一(转载)

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"页面:

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);
}
转自:
http://www.cnblogs.com/QLeelulu/archive/2008/03/18/1111477.html
原文地址:https://www.cnblogs.com/johnwonder/p/1903027.html