Asp.net mvc 定义多个路由时,如何将路由设为默认路由?

Asp.net mvc 定义多个路由时,如何将路由设为默认路由?,asp.net-mvc,routing,Asp.net Mvc,Routing,我有一个mvc网站,其中指定了默认路线 我的应用程序中有一个url,其定义如下: 我不希望我的Url显示如上所示,但格式如上所示,但如下所示: 因此,我定义了一条路线,如: routes.MapRoute( name: "Information", url: "{controller}/{action}/{Cust_ID}/{Cust_IMAGE_ID}", defaults: new { controller = "Information", action = "In

我有一个mvc网站,其中指定了默认路线

我的应用程序中有一个url,其定义如下:

我不希望我的Url显示如上所示,但格式如上所示,但如下所示:

因此,我定义了一条路线,如:

routes.MapRoute(
    name: "Information",
    url: "{controller}/{action}/{Cust_ID}/{Cust_IMAGE_ID}",
   defaults: new { controller = "Information", action = "Index", Cust_ID = UrlParameter.Optional, Cust_IMAGE_ID = UrlParameter.Optional
});
并将其添加到现有的routeconfig.cs中

这条路线在路线表中排名第二

当我运行应用程序并访问页面时,我没有得到我想要的格式

当我将此路径放置在第一个路径中时,我获得了所需的功能,但应用程序直接打开此页面,而不是主页

如何实现我想要的功能


我的问题是-在route表中定义的多个路由中,我想将一个路由作为默认路由

您有两个主要问题:

  • 特定路线必须在一般路线之前声明
  • 您定义的URL模式与预期的URL
    http://localhost:3729/Information/1/2
  • 要解决这些问题,您应该在默认路由之前定义路由,如下所示

    routes.MapRoute(
        name: "Information",
        url: "Information/{Cust_ID}/{Cust_IMAGE_ID}",
        defaults: new { controller = "Information", action = "Index", Cust_IMAGE_ID = UrlParameter.Optional
    });
    
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    
    您还使用可选的
    Cust\u ID
    参数定义了“information”URL,我猜这没有任何意义(除非您希望URL
    /information
    列出所有客户)。根据您的要求,将
    Cust\u IMAGE\u ID
    设置为可选也没有任何意义

    另一方面,如果图像实际显示在页面上,那么将客户图像ID放入URL似乎是个坏主意。这意味着用户可以更改URL以调出与当前客户无关的其他客户的图像


    另一条路线是什么?并删除
    Cust\u ID=urlparmeter.Optional
    (只有最后一个路由可以是可选的,如果另一个路由是
    url:{controller}/{action}/{ID}
    ,则删除
    Cust\u IMAGE\u ID=urlparmeter.Optional