我有一个关于在同一控制器中路由/导航的问题。
假设我已经设置了以下路由
routes.MapLowercaseRoute("SomeAwesomeControllerLookup",
"SomeAwesomeController/{genre}/{region}/{lookup}",
new
{
controller = "SomeAwesomeController",
action = "Index",
genre = UrlParameter.Optional,
region = UrlParameter.Optional,
lookup = UrlParameter.Optional,
});
和Url Action,如下所示
<a href="@Url.Action("Index", "SomeAwesomeController", new { genre = "Movies" })">Movies</a>
我希望我的URL每次看起来像"/someawesomcontroller/movies/boston/today",但是当我导航到一个过滤过的URL,如"/someawesomcontroller/movies/boston/today"时,我的菜单URL仍然是"/someawesomcontroller/movies/boston/today",不管上面的HTML剪辑中指定了什么参数。
我可以确保URL呈现总是"/someawesomcontroller/movies"没有硬编码吗?
正如我在其他时候学到的那样,路由值被过滤下来并由Action渲染器使用。
<a href="@Url.Action("Index", "SomeAwesomeController", new { genre = "Movies", region="", lookup="" })">Movies</a>
应该能解决你的问题。(也可以尝试"null",但我相信这不会覆盖现有的路由值。