-1

我在项目中有 2 页,比如说“用户网格”和“用户详细信息”。'UserGrid' 显示用户列表。单击该行的 ID 列时,合作伙伴将被重定向到“用户详细信息”页面,该页面显示用户的详细信息。

当合作伙伴单击 ID 时,我将 UserID 存储在会话中并在“用户详细信息”页面中访问它以获取用户详细信息。

现在假设第一个 ID 为 1234 的合作伙伴打开用户,然后他在下一个选项卡中打开 3456。所以现在我们有 2 个“用户详细信息”页面,其中包含 2 个不同的用户数据,但在会话中我们只有第二个选项卡用户 ID,因为第一个数据被覆盖。因此,现在如果我要更新第一个用户详细信息,它将在后台更新第二个用户详细信息,因为会话中存在第二个用户 ID。

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

4

2 回答 2

1

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

所以也许你需要做:

  • 将 ID 存储在会话中
  • 重定向到详细信息页面
  • 检查视图状态:
    • 如果有值,请使用它;
    • 否则从 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 回答