MVC框架-路由引擎


ASP.NET MVC 路由允许使用描述用户操作并且更容易被用户理解的 URL。同时,路由可用于隐藏不打算向最终用户显示的数据。

例如,在不使用路由的应用程序中,用户将看到 URL http://myapplication/Users.aspx?id=1,该 URL 对应于 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 中提及产品。MVC 框架自动识别 Controller 后缀。

创建一个简单的路线

路由在 App_Start 项目文件夹下的 RouteConfig.cs 文件中定义。

MVC 路由配置

您将在此文件中看到以下代码 -

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://服务器名称/产品/电子产品