Asp.net mvc 当动作等于默认路由值时,MVC ActionLink忽略动作
我已为我的应用程序定义了以下路由:Asp.net mvc 当动作等于默认路由值时,MVC ActionLink忽略动作,asp.net-mvc,actionlink,Asp.net Mvc,Actionlink,我已为我的应用程序定义了以下路由: routes.MapRoute( "Referral", // Route name "{referralCode}", // URL with parameters new { controller = "Home", action = "Index" } // Parameter defaults ); routes.MapRoute( "Default", // Route name "{controller}/
routes.MapRoute(
"Referral", // Route name
"{referralCode}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);
我正在尝试创建一个ActionLink,以便在我的AdminController上执行索引操作:
@Html.ActionLink("admin", "Index", "Admin")
但是,当执行视图时,ActionLink呈现为(忽略索引操作值):
正常情况下,这是可以的,但它会导致与“转诊”路由发生冲突
注意:如果我改为使用ActionLink渲染不同的操作,如“默认”,ActionLink将正确渲染:
<a href="/Admin/Default">admin</a>
“Default”操作正确呈现的事实使我相信问题与为路由指定的默认值有关。是否还有强制ActionLink渲染“索引”操作的方法?删除默认路由上的默认
操作
参数:
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home"} // action omitted
);
这将强制在url中始终指定操作。谢谢。我最终从“默认”路由的路由默认值和指定的referralCode=UrlParameter中删除了操作和控制器。对于“Referral”路由是可选的。
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home"} // action omitted
);