MVC 3路由-单动作路由



我有一个关于在同一控制器中路由/导航的问题。

假设我已经设置了以下路由

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",但我相信这不会覆盖现有的路由值。

最新更新