RouteUrl + RouteLink同时保持当前查询字符串值

时间:2012-06-29 20:08:33

标签: c# asp.net-mvc asp.net-mvc-routing

在ASP.net MVC中,我正在使用Url.RouteUrl& Html.RouteLink在我的页面中创建一些链接。

考虑以下默认路线:

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

使用Url.RouteUrl(new { controller = "Products", action = "List", sort = "newest" })会生成网址/Products/List?sort=newest

到目前为止,这正是我想要的。我不确定如何完成的是以下内容。如果我目前在/Products/List?sort=newest。我需要为用户提供一个URL来更改每页列出的产品数量:

`/Products/List?sort=newest&pagesize=30`

如何使用Url.RouteUrl生成以下网址,以便:

  • 如果我目前位于sort = newest的页面上,则会保留此值:/ Products / List?sort = newest& pagesize = 30
  • 如果我当前在没有排序的页面上,则会忽略它:/ Products / List?pagesize = 30

关于我的意思,您可以查看stackoverflow。如果我查看问题并更改以查看特色问题,然后单击底部的页面大小,它将保留排序,但随后将页面大小附加到URL。

1 个答案:

答案 0 :(得分:2)

Url.RouteUrl(
    new { 
        controller = "Products", 
        action = "List", 
        sort = Request["sort"],
        pagesize = "30"
    }
)

如果从/Products/List调用它,则会生成/Products/List?pagesize=30。如果从/Products/List?sort=newest调用它,则会产生/Products/List?sort=newest&pagesize=30