【发布时间】:2011-09-25 16:35:30
【问题描述】:
这个问题类似于asp.net mvc Html.ActionLink() keeping route value I don't want,但有一个转折使它更复杂。
从一个默认的新 MVC3 应用开始,我将路由更改为:
routes.MapRoute(
"r1", // Route name
"{controller}/{id}/{action}"
);
routes.MapRoute(
"r2", // Route name
"{controller}/{action}"
);
请注意,id 位于第一个操作之前。
然后在 Home\Index.cshtml 中,我添加:
@Url.Action("Index")
@Url.Action("Index", new { id = "blah" })
@Url.Action("Index", new { id = "" })
现在我导航到 /Home/Foo/Index 并查看 3 个生成的链接。我明白了
- "/Home/Foo/索引"
- "/Home/blah/索引"
- "/Home/Index?id=Foo"
前两个是有意义的,并且正在使用第一条路线。
但是在到达第二条路线的第三个链接中,我不明白为什么在查询字符串上传递 id=Foo,因为我明确传递了一个空 id。我希望它只生成“/Home/Index”。
谁能解释一下,并建议我如何让它不出现?
【问题讨论】:
-
+1 回答了一个很好的令人费解的问题 :-)
-
@nulltoken: 嘿,你想出了触发它的网站 :)
标签: c# asp.net-mvc asp.net-mvc-routing