オブジェクトをパラメーターとして検索アクションに渡し、そのパラメーター オブジェクトをビューに渡すのが好きです。したがって、次のようなコントローラーのコードを使用します ( Rob Conery の PagedList クラスを使用していることに注意してください)。
public class SearchParameters {
public string School { get; set; }
public int? StateID { get; set; }
public int? Page { get; set; }
public SearchParameters GetPage(int page) {
return new SearchParameters {
School = School,
StateID = StateID,
Page = page
};
}
}
public class SearchViewModel {
public PagedList<[YourResultType]> Results { get; set; }
public SearchParameters Parameters { get; set; }
}
// ...
public ActionResult Search(SearchParameters parameters) {
IQueryable<[YourResultType]> query;
// ... do some stuff to get your search results
return View("Search", new SearchViewModel {
Results = query.ToPagedList(parameters.Page - 1), 15),
Parameters = parameters
});
}
したがって、検索ビューは、次のようなページ宣言を持つジェネリック ViewPage<T> から継承します。
<%@ Page ... Inherits="ViewPage<SearchViewModel>" %>
次に、検索ビューで、次のようなことができます...
<% for(int i = 0; i < Model.Results.TotalPages; i++) { %>
<%= Html.ActionLink(i + 1).ToString(), "Search",
Model.Parameters.GetPage(i + 1)) %>
<% } %>