Asp.net mvc MVC 3路由-单操作路由

Asp.net mvc MVC 3路由-单操作路由,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我有一个关于同一控制器中的路由/导航的问题 假设我有以下路线设置 routes.MapLowercaseRoute("SomeAwesomeControllerLookup", "SomeAwesomeController/{genre}/{region}/{lookup}", new { controller = "SomeAwesomeController", action = "Index", genre = UrlP

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

假设我有以下路线设置

routes.MapLowercaseRoute("SomeAwesomeControllerLookup",
    "SomeAwesomeController/{genre}/{region}/{lookup}",
    new
    {
        controller = "SomeAwesomeController",
        action = "Index",
        genre = UrlParameter.Optional,
        region = UrlParameter.Optional,
        lookup = UrlParameter.Optional,
});
和Url操作,如下所示

<a href="@Url.Action("Index", "SomeAwesomeController", new { genre = "Movies" })">Movies</a>

我希望我的URL每次看起来都像“/someawesomecontroller/movies”,但是当我导航到一个过滤过的URL,如“/someawesomecontroller/movies/boston/today”时,我的菜单URL仍然是“/someawesomecontroller/movies/boston/today”,而不管上面剪下的HTML中指定的参数如何


我可以确保呈现的URL始终是“/someawesomecontroller/movies”,而无需对其进行硬编码。

正如我在其他时间了解到的,路由值将被过滤并由动作呈现器使用

<a href="@Url.Action("Index", "SomeAwesomeController", new { genre = "Movies", region="", lookup="" })">Movies</a>


应该能解决你的问题。(也可以尝试“null”,但我相信这不会覆盖现有的路由值。

似乎并不是完全将参数转换为查询字符串值,例如:/someawesomecontroller/movies?region=blah&lookup=blah我也尝试了以下
,但这只是清空了查询字符串参数。例如:/someawesomecontroller/movies?region=&lookup=很遗憾,不能为匿名参数指定null。@请尝试此链接。我就是在这里记住的。