替代ASP.NET中的会话

时间:2016-06-08 13:44:05

标签: asp.net session query-string state-management

我在项目中有2页,让我们说' UserGrid'和'用户详细信息'。 ' UserGrid'显示用户列表。点击该行的ID列后,合作伙伴会重定向到“用户详细信息”。页面,显示用户的详细信息。

当合作伙伴点击ID时,我将UserID存储在会话中并在' User Deatils'中访问它。用于获取用户详细信息的页面。

现在让伙伴打开ID为1234的用户,然后在下一个标签中打开3456。现在我们有2个用户详细信息'页面有2个不同的用户数据,但在会话中我们只有第二个选项卡UserID作为第一个数据被覆盖。所以现在如果我将更新第一个用户详细信息,在后台它将更新第二个用户详细信息,因为会话第二个用户ID存在。

如何以最佳方式管理它,除了查询字符串?

2 个答案:

答案 0 :(得分:1)

如果您确实不想在查询字符串中显示ID,则可以将值存储在ViewState中。这些是页面实例特定的,将在回发后存活,但不会在重定向中存活。

所以也许你需要这样做:

  • 将ID存储在会话中
  • 重定向到详细信息页面
  • 检查ViewState:
    • 如果有值,请使用;
    • 从Session复制到ViewState

答案 1 :(得分: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 Property

Passing variables between pages using QueryString