- MVC 框架教程
- MVC 框架 - 首页
- MVC 框架 - 简介
- MVC 框架 - 架构
- MVC 框架 - ASP.NET Forms
- MVC 框架 - 第一个应用程序
- MVC 框架 - 文件夹
- MVC 框架 - 模型 (Models)
- MVC 框架 - 控制器 (Controllers)
- MVC 框架 - 视图 (Views)
- MVC 框架 - 布局 (Layouts)
- MVC 框架 - 路由引擎
- MVC 框架 - 动作过滤器 (Action Filters)
- 高级示例
- MVC 框架 - Ajax 支持
- MVC 框架 - 打包 (Bundling)
- 异常处理
- MVC 框架有用资源
- 问答
- MVC 框架 - 快速指南
- MVC 框架 - 资源
- MVC 框架 - 讨论
MVC 框架 - 路由引擎
ASP.NET MVC 路由允许使用描述用户操作且更易于用户理解的 URL。同时,路由可用于隐藏不打算显示给最终用户的 数据。
例如,在一个不使用路由的应用程序中,用户将看到 URL 为 http://myapplication/Users.aspx?id=1,这对应于 myapplication 路径中的 Users.aspx 文件,并将 ID 发送为 1。通常,我们不希望将此类文件名显示给最终用户。
为了处理 MVC URL,ASP.NET 平台使用路由系统,它允许您创建任何所需的 URL 模式,并以清晰简洁的方式表达它们。MVC 中的每个路由都包含一个特定的 URL 模式。此 URL 模式与传入的请求 URL 进行比较,如果 URL 与此模式匹配,则路由引擎将使用它来进一步处理请求。
MVC 路由 URL 格式
要理解 MVC 路由,请考虑以下 URL:
http://servername/Products/Phones
在上面的 URL 中,“Products” 是第一段,“Phone” 是第二段,可以用以下格式表示:
{controller}/{action}
MVC 框架会自动将第一段视为控制器名称,将第二段视为该控制器内的一个操作。
注意 - 如果您的控制器名称为 ProductsController,您只需要在路由 URL 中提及 Products。MVC 框架会自动理解 Controller 后缀。
创建一个简单的路由
路由定义在 RouteConfig.cs 文件中,该文件位于 App_Start 项目文件夹下。
您将在该文件中看到以下代码:
public class RouteConfig { 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 } ); } }
当应用程序启动时,Global.ascx 会调用此 RegisterRoutes 方法。Global.ascx 下的 Application_Start 方法调用此 MapRoute 函数,该函数设置默认控制器及其操作(控制器类中的方法)。
要根据我们的示例修改上述默认映射,请更改以下代码行:
defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }
此设置将选择 ProductsController 并调用其中的 Phone 方法。同样,如果您在 ProductsController 中有另一个方法,例如 Electronics,则它的 URL 将为:
http://servername/Products/Electronics