我从
更改了ASP.NET MVC中的默认路由 routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
到
routes.MapRoute(
"Default",
"{controller}/{action}/{id}/{lineNo}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional, lineNo = UrlParameter.Optional });
但现在所有@ Html.ActionLink()调用都呈现为href =“”。如果我将路由更改回默认值,则所有链接都会再次运行。
我使用与RC1相同的路线,它运作良好。
我在发布文档中没有找到任何内容,所以我认为我做错了。
此致 斯特芬
答案 0 :(得分:2)
在路线中,可选参数只能出现在最后。这意味着在您的路线定义中,id
参数不能是可选的。您需要将其明确设置为值。
routes.MapRoute(
"Default",
"{controller}/{action}/{id}/{lineNo}",
new {
controller = "Home",
action = "Index",
lineNo = UrlParameter.Optional
}
);
当您生成链接时,如果您希望此路由匹配,则必须始终为id参数提供值:
@Html.ActionLink("some link", "index", new { id = "123" })
作为替代方案,您可以为id参数提供默认值:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}/{lineNo}",
new {
controller = "Home",
action = "Index",
id = "123",
lineNo = UrlParameter.Optional
}
);
现在您不再需要在链接中指定它。