最後に、サーバーでセッション Cookie を使用して、表示されたページと最後の検索を追跡しました。これは、ページ/コントローラー間を移動し、それぞれにどのページが表示されているかを追跡できることを意味し、多くのパラメーターを渡す必要はありませんでした。新しいクラスを追加しました:
public class SearchModel
{
public string TargetController { get; set; }
public string TargetMethod { get; set; }
public string OriginalSearchCriteria { get; set; }
public string NewSearchCriteria { get; set; }
public int Page { get; set; }
public void SetCriteria(String newCriteria, int pageIn)
{
if (!newCriteria.Equals(OriginalSearchCriteria))
{
OriginalSearchCriteria = newCriteria;
Page = 1;
}
else
{
Page = pageIn;
}
}
public void SetPage(int newPage)
{
if (newPage != 0)
Page = newPage;
}
}
追加したばかりのコントローラーで:
private SearchModel GetSearch()
{
SearchModel search = (SearchModel)Session["CgRefCodeSearch"];
if (search == null)
{
search = new SearchModel();
search.Page = 1;
search.OriginalSearchCriteria = "";
Session["CgRefCodeSearch"] = search;
}
return search;
}
コントローラーの各関数で、これを参照できます。
GetSearch().SetPage(page);
CurrentPage = GetSearch().Page etc...
これは、Adam Freeman によるこの Pro ASP.NET MVC 3 Framework, Third Edition で読んだ内容に基づいています。スティーブン・サンダーソン。とてもシンプルですが、問題なく動作します。