2010-02-26 72 views
0

我正在使用分页方法来显示从我的数据库返回的搜索结果。 我为每个额外页面创建一个Html.ActionLink,我想知道的是,如何将搜索到的字符串放入ActionLink?以下是我的部分观点的一部分,我正在填写一个div。它在结果之后,以便用户可以选择另一页结果。如何在分页时为其他页面保留搜索词

  <% if (Model.HasNextPage) 
       { %>     
       <% for (var i = 1; i < Model.TotalPages; i++) 
        { %> 
         <%= Html.ActionLink(i.ToString(), "MyPartialPage", "MyController", new { searchString = Cache[searchString], page = i }, new { @id = "SearchResults" })%> 
       <% } %> 
      <% } %> 

myController的样子:

public ActionResult SearchResults(string searchString, int? page) 
    { 
     var theResults = driverRepository.GetResults(); 

     var searchResults = drivers.Where(q => q.Filename.Contains(searchString)); 

     var paginatedDrivers = new PaginatedList<Driver>(searchResults, page ?? 0, pageSize); 

     return View("SearchResults", paginatedDrivers); 
    } 

有一个文本框和按钮。用户键入搜索并按下按钮,该按钮触发一些JavaScript,从文本框中获取文本并相应地发布到SearchResults。

我想保留他们搜索的内容,所以当我构建ActionLink时,搜索参数仍然存在。

+1

看看这个提问/回答:http://stackoverflow.com/questions/1663616/paging-search-results-with-asp-net-mvc/1664269#1664269 – Omar 2010-02-26 14:28:20

+0

缓存的东西我会喜欢做,但我确实有问题。为了缓存起作用,我需要为每个searchString创建一个唯一的键,直到我看到我的视图的HasNextPage部分,这会创建actionlink。由于actionlink需要传递searchString参数,因此我将使用搜索的链接进行链接。我如何获得这个密钥? – Darcy 2010-02-26 16:57:11

回答

0

我最终什么事做了,增加了参数来我PaginatedList类,它包含搜索字符串,然后设置我的搜索字符串中的ActionResult到model.seachString,像这样:

 <% if (Model.HasNextPage) 
      { %>     
      <% for (var i = 1; i < Model.TotalPages; i++) 
       { %> 
        <%= Html.ActionLink(i.ToString(), "MyPartialPage", "MyController", new { searchString = this.Model.SearchString, page = i }, new { @id = "SearchResults" })%> 
      <% } %> 
     <% } %> 

和我的控制器貌似

public ActionResult SearchResults(string searchString, int? page) 
{ 
    var theResults = driverRepository.GetResults(); 

    var searchResults = drivers.Where(q => q.Filename.Contains(searchString)); 

    var paginatedDrivers = new PaginatedList<Driver>(searchString, searchResults, page ?? 0, pageSize); 

    return View("SearchResults", paginatedDrivers); 
} 
0

您可以将寻呼机链接放在包含搜索框的同一表单中,并用提交或图像按钮替换它们。

相关问题