如何让Url.Action不保留路由值?

时间:2010-06-28 07:55:38

标签: asp.net-mvc url-routing

我有一个MVC 2.0应用程序,我有一个可以通过他们的第一个字母浏览的项目列表,我在主页面上有一个选项卡,用于整个项目列表。

我希望母版页上的标签始终显示为:

/items

还有abc的字母用于以字母开头的项目。例如,对于a,它应该转到:

/items/a

要为我使用的母版页中的标签生成链接:

Url.Action("Index", "Items")

问题在于,如果我查看以a开头的项目,那么我就在/items/a,然后该标签也会指向此位置而不只是/items

任何人都知道为什么会这样,我该怎样做才能始终使用正确的UrlHelper方法指向标签中的/items

编辑:我的溃败如下:

    routes.MapRouteLowercase(
        "DefaultPrefixed",                                              // Route name
        "{controller}/{action}/{q}",                           // URL with parameters
        new { controller = "Items", action = "Index", q = "" },  // Parameter defaults
        new { q = @"[a-z]{1}" }                                        // constraint
    );

    routes.MapRouteLowercase(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );

1 个答案:

答案 0 :(得分:9)

这取决于您的路线,但假设您使用的是默认路线:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Users", action = "Index", id = UrlParameter.Optional }
);

您始终可以将可选路线值设为空白:

Url.Action("Index", "Items", new { id = string.Empty })
相关问题