2016-06-08 83 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