-1

プロジェクトには 2 つのページがあります。「UserGrid」と「User Details」としましょう。「UserGrid」は、ユーザーのリストを表示します。行の ID 列をクリックすると、パートナーは「ユーザーの詳細」ページにリダイレクトされ、ユーザーの詳細が表示されます。

パートナーが ID をクリックしている間、私は UserID をセッションに保存し、'User Deatils' ページにアクセスしてユーザーの詳細を取得します。

ここで、パートナーが最初に ID 1234 のユーザーを開いてから、次のタブで 3456 を開いたとします。これで、2 つの異なるユーザー データを含む 2 つの「ユーザーの詳細」ページができましたが、セッションでは、最初のデータが上書きされたため、2 番目のタブ UserID しかありません。したがって、最初のユーザーの詳細を更新すると、バックグラウンドで、セッションの 2 番目のユーザー ID が存在するため、2 番目のユーザーの詳細が更新されます。

クエリ文字列を除いて、それを最善の方法で管理するにはどうすればよいですか?

4

2 に答える 2

1

クエリ文字列に ID を表示したくない場合は、値をViewStateに格納できます。これらはページ インスタンス固有であり、ポストバックには耐えられますが、リダイレクトには耐えられません。

だから多分あなたはする必要があります:

  • ID をセッションに保存する
  • 詳細ページにリダイレクト
  • ViewState を確認します。
    • 値がある場合はそれを使用します。
    • そうでない場合は、Session から ViewState にコピーします
于 2016-06-08T15:13:52.680 に答える
0

これらの状況では、 QueryStringを使用する必要があります

<asp:HyperLink   
    ID="HyperLink1"  
    runat="server"  
    NavigateUrl="~/Webform2.aspx?UserId=1"
    Text="User"  
</asp:HyperLink> 

ユーザーの詳細ページで入手

private void Page_Load(object sender, System.EventArgs e)
{
    int ID = Convert.ToInt32( Request.QueryString["UserId"]);
    // get user and display it 

}

詳しくは :

HttpRequest.QueryString プロパティ

QueryString を使用してページ間で変数を渡す

于 2016-06-08T14:38:39.687 に答える