概述

 

在 ASP.NET 网站中,URL 通常映射到存储在磁盘上的文件(通常为 .aspx 文件)。 这些 .aspx 文件包括经过处理以响应请求的标记和代码。

Controller 类通常会调用一个生成 HTML 输出作为响应的单独视图组件。

默认情况下,每组组件都位于 MVC Web 应用程序项目的单独文件夹中。

 

回顾

 

MVC应用程序的执行过程

UrlRoutingModule 对象不执行任何操作,并允许请求回退到常规的 ASP.NET 或 IIS 请求处理流程。

MvcHandler 对象会选择将最终处理该请求的控制器。 

它们执行下列操作:

  • 选择 MVC Web 应用程序中合适的控制器。

  • 获取特定的控制器实例。

 

下表列出了 MVC Web 项目的执行阶段。

阶段

详细信息

接收对应用程序的第一个请求

RouteTable 对象中。

执行路由

RequestContext 对象。

创建 MVC 请求处理程序

RequestContext 实例传递给处理程序。

创建控制器

DefaultControllerFactory 类的实例)。

执行控制器

Execute 方法。

调用操作

ControllerActionInvoker 对象将决定要调用的 controller 类的操作方法,然后调用该方法。

执行结果

EmptyResult

 

 

基础概念

匹配定义的路由的 URL 请求。

IHttpHandler 对象,并将该对象用作当前请求的 HTTP 处理程序。

UrlRoutingModule.RouteCollection 属性

包含路由的对象的集合。

IRouteHandler 接口

定义类必须实现才能处理匹配路由模式的请求的协定。

IRouteHandler.GetHttpHandler 方法

.IHttpHandler对象。

IHttpHandler 接口

定义 ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定。

ControllerBase.Execute 方法

执行指定的请求上下文。

RouteTable

存储应用程序的 URL 路由。

Routes 属性中。

Routes 属性的路由的顺序非常重要,因为应用程序会使用它在与 URL 匹配的集合中找到的第一个路由。

RouteTable.Routes 属性

RouteBase 类派生的对象的集合。

 

MVC 包括以下处理程序类型:

  • RequestContext 对象。)

  • MvcHandler 实例。

  • UrlRoutingModule 为所有请求启用时,通常不使用此处理程序。

 

Url路由

 

您还可以让该路由引擎自动分析 URL 中定义的变量,并让 ASP.NET MVC 框架将值作为参数自变量传递给控制器。

 

路由

Route 类的一个实例。

RouteCollection 对象。

MvcApplication 类中定义的,该类是在 Global.asax 文件中定义的。

 

特性

由于该 URL 不必映射到文件,因此可以使用对用户操作进行描述因而更易于被用户理解的 URL。

id=4 来确定要显示的内容类型。

另外,可以在 URL 模式中包含占位符,以便无需查询字符串,即可将变量数据传递到请求处理程序。

/Products/show/beverages 片断将被解释为应用程序中一个文件的路径。

 

URL 模式

文本和占位符位于由斜杠 (/) 字符分隔的 URL 段中。

对于路由,键是在 URL 模式中定义的占位符名称,只有值位于 URL 中。

country 占位符的值分隔开。

 

下表演示有效的路由模式和一些与模式匹配的 URL 请求的示例。

路由定义

匹配 URL 示例

{controller}/{action}/{id}

/Products/show/beverages

{table}/Details.aspx

/Products/Details.aspx

blog/{action}/{entry}

/blog/show/123

{reporttype}/{year}/{month}/{day}

/sales/2008/1/5

{locale}/{action}

/US/show

{language}-{country}/{action}

/en-US/show

 

MVC 应用程序中的典型 URL 模式

{action} 占位符。

URL 中的操作值确定要调用的操作方法。

Show 方法。

下表显示了默认 URL 模式,并给出由默认路由处理的 URL 请求的示例。

默认 URL 模式

匹配 URL 示例

{controller}/{action}/{id}

http://server/application/Products/show/beverages

{resource}.axd/{*pathInfo}

http://server/application/WebResource.axd?d=...

{resource}.axd/{*pathInfo} 的路由,以避免对 Web 资源文件(例如 WebResource.axd 或 ScriptResource.axd)的请求传递给控制器。

对于 IIS 6.0,必须向 URL 模式添加 .mvc 文件扩展名,如下面的示例所示:

{controller}.mvc/{action}/{id}

 

 Global.asax默认路由

 

        public static void RegisterRoutes(RouteCollection routes)
{
//忽略对.axd文件的Route,也就是和WebForm一样直接去访问.axd文件
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);
}

protected void Application_Start()
{
//在程序启动的时候注册我们前面定义的Route规则
RegisterRoutes(RouteTable.Routes);
}

 

 

总结

我们从MVC程序的运行开始一步一步,深入了解了MVC程序使用其强大的Routing规则,使我们使用和开发MVC程序都有了新的体验和认识。从而在一定基础上保护了程序的健壮性。

下节预告

继续学习并创建自己的潜规则Routing。。。。

声明:本文部分内容来自于网络。版权归原作者所有。 

http://www.cnblogs.com/lukun/  联系我,非常感谢。

相关文章: