C# 两条简单的路线不能正常工作

C# 两条简单的路线不能正常工作,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,如何使此路线有效: routes.MapRoute( name: "Custom", url: "{modality}/{controller}/{action}/{id}", defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRout

如何使此路线有效:

        routes.MapRoute(
            name: "Custom",
            url: "{modality}/{controller}/{action}/{id}",
            defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
如果我想要这个,我需要打电话:

/ModalityName/SomeController/SomeAction/SomeId

/SomeController/SomeAction/SomeId

但是mvc默认的第二条路线不起作用


我只需要一些时间来通知模态,这样我就可以得到一些内容,基于这些内容,

路由按顺序评估是否与传入URL匹配

routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”)

}


更多信息请阅读链接:

我认为这是因为您已将“模态”设置为可选,而未设置其默认值。因此,当您调用
/SomeController/SomeAction/SomeId
时,它默认为第二个路由,即“默认”。并且,如果您将其设置为可选并设置其默认值,则第二个路由将永远不会被评估为第一个路由始终与url模式匹配。所以,用户必须输入url模式直到模态,这样它就不会默认为第二个路由。
routes.MapRoute(
    name: "Custom",
    url: "ModalityName/{controller}/{action}/{id}",
    defaults: new
    {
        controller = "ModalityName",
        action = "action",
    }
);



routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { 
        controller = "Home", 
        action = "Index", 
        id = UrlParameter.Optional }
);