データベースから返された検索結果を表示するためにページネーション方式を使用しています。余分なページごとに 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);
}
テキストボックスとボタンがあります。ユーザーが検索を入力してボタンを押すと、テキストボックスからテキストを取得し、それに応じて SearchResults に投稿する JavaScript が起動されます。
彼らが検索したものを保持したいので、ActionLinks を構築するときに検索パラメーターがまだ存在しています。