65.9K
CodeProject 正在变化。 阅读更多。
Home

理解 ASP.NET MVC 中的路由框架

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (7投票s)

2014 年 5 月 11 日

CPOL

2分钟阅读

viewsIcon

25569

理解 ASP.NET MVC 中的路由框架

引言

当有人提到“MVC”这个术语时,首先出现在脑海中的是构成整个 MVC 框架的三个不同的组件。这些组件是

  1. 模型
  2. 视图,以及
  3. 控制器 (Controller)

尽管在名称(MVC)中从未提及,但路由框架实际上是首先发挥作用的东西。

为什么?

虽然不是强制性的,但了解路由框架肯定会让你对整个 ASP.NET MVC 框架有一个很好的理解。在下一篇文章中,我将讨论 MVC5 的一个很酷的功能,即 [属性] 路由,本教程将是该教程的先决条件。

详细信息

现在,既然你决定继续阅读这篇文章,让我们开始探索路由框架到底是什么。ASP.NET MVC 路由框架是每个 ASP.NET MVC 请求的核心。这意味着,每当最终用户访问特定 URL 时,路由框架就会发挥作用。

路由框架本质上是一个模式匹配系统。路由系统使用在路由表中 [App_Start\RouteConfig.cs] 列出的规则系列来确定响应路由引擎拦截的请求而执行哪个控制器和操作。当找到与模式匹配的 URL 时,路由引擎会尝试匹配占位符中的文本。如果找不到匹配项,它将返回 404 HTTP 状态码。整个概念如图所示

请注意,每个路由规则都包含可以匹配控制器、操作以及任意数量变量的占位符。变量数据可以传递给请求处理程序,而无需查询字符串。

现在,让我们看一下位于“App_Start”文件夹下的 RouteConfig.cs 文件。路由引擎基本上将接收到的 URL 的模式与以下文件中注册的 RouteCollection 进行匹配

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
   );
} 

正如你所看到的,随 MVC 模板一起提供的默认代码片段不仅用于提供名称和 URL 模式,还定义了一组默认参数。如果路由引擎找不到完全匹配项,它将开始从默认值中填充 URL 未提供的那些值。

如果你想映射新路由,只需将所需的路由添加到此文件 (RouteConfig.cs) 中即可。你通过将 Route 对象添加到 RouteTable 类的 static Routes 属性中,将路由添加到应用程序中。Routes 属性是一个 RouteCollection 对象,用于存储应用程序的所有路由。

注意

添加新路由时,务必记住,你必须先添加特定的路由,然后添加更通用的路由。否则,你的 Web 应用程序将永远无法接收到正确的路由。

下一步?

在下一篇文章中,我将讨论“属性路由”。在此之前,祝你玩得开心!

© . All rights reserved.