Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 当动作等于默认路由值时,MVC ActionLink忽略动作_Asp.net Mvc_Actionlink - Fatal编程技术网

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
);