Asp.net mvc 4 mvc4中的多路由
我希望在我的应用程序中有多条路由,我正在使用以下代码Asp.net mvc 4 mvc4中的多路由,asp.net-mvc-4,routing,asp.net-mvc-routing,Asp.net Mvc 4,Routing,Asp.net Mvc Routing,我希望在我的应用程序中有多条路由,我正在使用以下代码 routes.MapRoute( name: "Custom", url: "{lang}/{action}/{id}/{Title}/{type}", defaults: new { controller = "Main", action = "Default", id = UrlParamete
routes.MapRoute(
name: "Custom",
url: "{lang}/{action}/{id}/{Title}/{type}",
defaults: new
{
controller = "Main",
action = "Default",
id = UrlParameter.Optional,
Title = UrlParameter.Optional,
lang = "en",
type = UrlParameter.Optional
}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Admin",
action = "Login",
id = UrlParameter.Optional
}
);
问题
这适用于/en/Default/id/title/type此处默认为我的操作名。
当是user/Admin/Login时,则其抛出服务器错误我认为您必须为此使用路由约束 可能是下面。它没有经过测试,但路由约束可以解决您的问题
routes.MapRoute(
name: "Custom",
url: "{lang}/{action}/{id}/{Title}/{type}",
defaults: new
{
controller = "Main",
action = "Default",
id = UrlParameter.Optional,
Title = UrlParameter.Optional,
lang = "en",
type = UrlParameter.Optional
},
new { lang= "[en|us]"}
}
这在两种情况下都可以正常工作
routes.MapRoute(
"Custom",
"{lang}/{action}/{id}/{Title}/{type}",
new
{
controller = "Main",
action = "Default",
id = UrlParameter.Optional,
Title = UrlParameter.Optional,
lang = "en",
type = UrlParameter.Optional
}, new { lang = @"(en)|(hi)|(es)" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new
{
controller = "Main",
action = "Default",
id = UrlParameter.Optional
}
);
我们无法以这种方式添加新的{lang=[en|us]}。请尝试将默认路由移到上面。