📜  MVC框架-路由引擎

📅  最后修改于: 2020-10-21 04:50:42             🧑  作者: Mango


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

在上述网址中,产品是第一个细分,电话是第二个细分,可以采用以下格式表示-

{controller}/{action} 

MVC框架自动将第一段视为控制器名称,将第二段视为该控制器内部的动作之一。

-如果控制器的名称为ProductsController,则只能在路由URL中提及Products。 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函数,该函数设置默认的Controller及其操作(Controller类内部的方法)。

要根据我们的示例修改上述默认映射,请更改以下代码行:

defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional } 

此设置将选择ProductsController并在其中调用Phone方法。同样,如果您在ProductsController中使用其他方法(例如电子产品),则其URL为-

http:// servername / Products / Electronics