Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
C# MVC4-未记住路线值_C#_.net_Razor_Asp.net Mvc 4_Asp.net Routing - Fatal编程技术网

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