在RouterLink中保留查询字符串参数

时间:2009-04-02 19:15:22

标签: asp.net-mvc

我正在为我正在处理的网站实施基本搜索功能。到目前为止,最干净的方法似乎是创建一个方法签名类似于:

的动作
//
// GET: /BeautySchoolDropouts/Search?page=2&q=grease

public ActionResult Search(int? page, string q)
{
  //Implementation
}

我在搜索结果页面上有一些代码,提供类似于以下内容的分页链接:

<%= Html.RouteLink("<< Previous Page", new { page = (Model.PageIndex - 1) }) %>

<%= Html.RouteLink("Next Page >>", new { page = (Model.PageIndex + 1) }) %>

由于我将路由值作为RouteLink方法的一部分提供,是否不可能保持q =查询字符串的任何部分?现在,链接仅生成/ BeautySchoolDropouts / Search?page = 2,这显然会导致问题,因为我不知道搜索的内容。

1 个答案:

答案 0 :(得分:1)

我认为这可以用来假设你把查询字符串放在某个地方的模型中(这段代码使用的是Model.QueryString;注意我在这里说“查询字符串”时,我说的是查询参数,而不是HTTP查询串);我不认为你想要保留整个查询字符串,因为那样你会得到?page = 1&amp; q = whatever&amp; page = 2&amp; page = 3.

<%= Html.RouteLink("<< Previous Page", new { page = (Model.PageIndex - 1), q = Model.QueryString }) %>

<%= Html.RouteLink("Next Page >>", new { page = (Model.PageIndex + 1), q = Model.QueryString }) %>