2016-06-08 99 views
-1

我在項目中有2個頁面,比如說'UserGrid'和'User Details'。 'UserGrid'顯示用戶列表。點擊該行的ID列後,合作伙伴將被重定向到「用戶詳情」頁面,其中顯示了用戶的詳細信息。ASP.NET中的會話替代方案

當合作夥伴點擊ID時,我會將用戶ID存儲在會話中,並在'User Deatils'頁面中訪問以獲取用戶詳細信息。

現在讓合作伙伴打開ID爲1234 1st的用戶,然後在下一個選項卡中打開3456。因此,現在我們有2個「用戶詳細信息」頁面,其中包含2個不同的用戶數據,但在會話中,我們只有第二個選項卡UserID作爲第一個數據被覆蓋。所以,現在如果我將更新第一個用戶的詳細信息,它將在後臺更新第二個用戶的詳細信息,如會話第二個用戶ID存在。

如何以最佳方式管理它,但查詢字符串除外?

+2

最好的方法*的*查詢字符串 –

+0

Tahnks @Hans合成聚合物膜,我已經在問題中提到,如果我可以使用任何其他的東西? – user1926138

回答

1

如果你真的不想要顯示的ID查詢字符串中,您可以在ViewState存儲值。這些是頁面實例特定的,將在回發期間生存,但不會在重定向中生存。

因此,也許你需要做的:

  • 存放在會話中的ID
  • 重定向到詳細信息頁面
  • 檢查的ViewState:
    • 如果有一個值,可以使用它;
    • 從其他會話複製到ViewState中
0

在這種情況下,你必須使用查詢字符串

<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 Property

Passing variables between pages using QueryString

+0

使用[TryParse](https://msdn.microsoft.com/en-us/library/system.int32.tryparse(v = vs.110).aspx)而不是Convert.ToInt32。否則,如果UserId無效,它將引發異常。 – Win