製品のリストを提供するDataPagerによってページングされた単純なListViewがあります。製品をクリックすると、製品の詳細ページが開きます。詳細ページでは、「製品リストに戻る」必要がありますが、もちろん、データページャーがどのページにあったかを記憶しておく必要があります。
確かに、これは自然な設計要件として考えられていました-これを行うための簡単なすぐに使える方法は何ですか?
DataPagerのQueryStringFieldプロパティを使用すると、URLにページ番号が含まれるため、バックリンクでリファラーURLを使用できると期待していましたが、Request.UrlReferrerの信頼性が低いことがわかりました(F5を使用してアプリをデバッグする場合)たとえば、Internet Explorerでは、Request.UrlReferrerは常にnullです)。
ページ番号をセッション変数に格納することで、ある程度の成功を収めました。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session["PagerIndex"] != null)
{
DataPager1.SetPageProperties((int)Session["PagerIndex"],
DataPager1.MaximumRows, false);
}
}
}
protected void DataPager1_PreRender(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
Session["PagerIndex"] = DataPager1.StartRowIndex;
}
}
この方法にはいくつかの欠点があります。
- QueryStringFieldが空白の場合にのみ機能します(したがって、IsPostBackを検出できます)
- 各ポケットベルに必要なセッション/Cookie変数
- セッション/Cookie変数をリセットする方法についての質問が発生します
これを行うための「適切な」方法は何ですか?
ありがとう