Asp.net mvc 如何通过mvc中的路由匹配到正确的操作方法?
我太困惑了,以至于我没能正确地回答这个问题。 这是我的问题。以下是我申请中的路线Asp.net mvc 如何通过mvc中的路由匹配到正确的操作方法?,asp.net-mvc,asp.net-mvc-4,routing,routes,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 4,Routing,Routes,Asp.net Mvc Routing,我太困惑了,以至于我没能正确地回答这个问题。 这是我的问题。以下是我申请中的路线 //"list/author" => list by author routes.MapRoute("ListByAuthor", "list/{author}", new { controller = "MyCtrl", action = "MyAction" }); //"list/tag" => list by tag routes.MapRoute("ListBy
//"list/author" => list by author
routes.MapRoute("ListByAuthor",
"list/{author}",
new { controller = "MyCtrl", action = "MyAction" });
//"list/tag" => list by tag
routes.MapRoute("ListBytag",
"list/{tag}",
new { controller = "MyCtrl", action = "MyACtion" });
//default
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "MyCtrl", action = "MyAction", id = UrlParameter.Optional });
我通过提供RouteName来生成视图上的链接,即ListByAuthor、ListByTag和Default。我有两个问题:-
ListByAuthor
例如,当我单击标记时,地址栏显示正确的url格式,即域/列表/标记
,但通过调试,我发现标记
值已分配给作者
参数。domain/list/tag?author
。网站上的一个解决方案建议在路由值中传递String.Empty
,但它不起作用。但是如果我改变路线如下
//"list/author" => list by author
routes.MapRoute("ListByAuthor",
"list/{author}",
new { controller = "MyCtrl", action = "MyAction", tag = "" }); //providing empty value to tag parameter in route
但是,在路由中显式提供默认值需要大量工作。请给我一些答案。我正在与路线作斗争。支持我赢得这场战争。提前谢谢我不是专家,但我认为原因是因为你的路线是一样的, 范例 yourdomain.com/list/authorxm将匹配第一个路由 yourdomain.com/list/tagx也将匹配 因为{author}和{tag}只是参数 试试这个:
//"list/author" => list by author
routes.MapRoute("ListByAuthor",
"list/ByAuthor/{author}",
new { controller = "MyCtrl", action = "MyActionByAuthor" });
//"list/tag" => list by tag
routes.MapRoute("ListBytag",
"list/ByTag/{tag}",
new { controller = "MyCtrl", action = "MyACtionByTag" });
//default
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "MyCtrl", action = "MyAction", id = UrlParameter.Optional })