【发布时间】:2016-10-17 12:37:08
【问题描述】:
我有一个包含以下链接的 MVC4 索引页面:
@Html.ActionLink("FOO", "Index", "Mil", new { year = String.Empty, id = String.Empty }, null)
@Html.ActionLink("BAR", "Index", "Euro", new { year = String.Empty, id = String.Empty }, null)
但奇怪的是,两者都变成了指向 CURRENT 路径的超链接(即,如果我们在 domain/Euro/2016/1 处,两者都链接到该地址),而不是指向指定的控制器。
RouteConfig 一切正常:
routes.MapRoute(
name: "Default",
url: "{controller}/{year}/{id}",
defaults: new { controller = "Home", action = "Index", year = UrlParameter.Optional, id = UrlParameter.Optional }
);
控制器/动作存在并且工作正常:
EuroController:
public ActionResult Index(int? year, int? id)
{
...
}
是什么导致了这种奇怪的行为?
编辑:
如果我通过 year 参数,工作正常:@Html.ActionLink("FOO", "Index", "Mil", new { year = 666, id = String.Empty }, null) 正确指向 domain/Mil/666。
【问题讨论】:
-
可能不是问题,但只有最后一个参数可以标记为
UrlParameter.Optional -
我编辑了我的问题。这不是解决方案,但肯定是相关的。我按照您的建议将 Routes 中的
year=UrlParameter.Optional更改为year="",但问题仍然存在。 -
要么使用
null即:@Html.ActionLink("FOO", "Index", "Mil", new { year = null, id = null }, null),要么一起删除它们,即:@Html.ActionLink("FOO", "Index", "Mil", null, null) -
@Nkrosi 您建议的两个链接都不起作用。
标签: asp.net-mvc-4 iis actionlink html.actionlink