C# MVC4-未记住路线值
以下是我的路线设置:C# MVC4-未记住路线值,c#,.net,razor,asp.net-mvc-4,asp.net-routing,C#,.net,Razor,Asp.net Mvc 4,Asp.net Routing,以下是我的路线设置: routes.MapRoute( name: "MyRoute", url: "Secret/{source}/{display}/{sort}/{tags}/{filter}/{pageSize}/{page}", defaults: new { controller = "Secret", action = "Index", page = 1, filter = "-", tags = "-" }, namespaces: new[] {
routes.MapRoute(
name: "MyRoute",
url: "Secret/{source}/{display}/{sort}/{tags}/{filter}/{pageSize}/{page}",
defaults: new { controller = "Secret", action = "Index", page = 1, filter = "-", tags = "-" },
namespaces: new[] { "SomeProject.Controllers" }
);
当我访问此URL时:
http://localhost:12345/Secret/SourceHere/Gallery/Score/-/-/26
我的视图有以下标记:
<a href="@Url.Action("Index", new { tags = @tagInfo.Tag })">
虽然我找不到它的官方文档,但我在谷歌等网站上读到的所有内容都说应该保留路线值。我通过每次指定所有路由值来解决这个问题,但这太糟糕了
为什么不保留我的路线值
编辑我下面的答案不太正确。在另一种观点/情况下,此处的规则不适用。有人能绝对肯定地解释何时记忆路线值的规则吗
路由让我抓狂。事实证明(感谢Robert Harvey),确保所有路由参数都有默认值(所有参数)意味着视图将生成记住当前路由值的链接
我想指出,这确实令人困惑:默认值不用于任何东西,但需要指定它们,以便记住值
唯一的问题是,它只记得指定其值的第一个参数。之后的所有参数都将丢失(即使是具有非默认值的参数)
因此,目前的答案是:为所有路由参数指定一些(任意!)默认值,并记住为所需的参数指定新值,以及路由URL中紧跟其后的任何值。
http://localhost:12345/Secret?tags=hello