ASP.NET中的会话替代方案
我在项目中有2个页面,比如说'UserGrid'和'User Details'。 'UserGrid'显示用户列表。点击该行的ID列后,合作伙伴将被重定向到“用户详情”页面,其中显示了用户的详细信息。ASP.NET中的会话替代方案
当合作伙伴点击ID时,我会将用户ID存储在会话中,并在'User Deatils'页面中访问以获取用户详细信息。
现在让合作伙伴打开ID为1234 1st的用户,然后在下一个选项卡中打开3456。因此,现在我们有2个“用户详细信息”页面,其中包含2个不同的用户数据,但在会话中,我们只有第二个选项卡UserID作为第一个数据被覆盖。所以,现在如果我将更新第一个用户的详细信息,它将在后台更新第二个用户的详细信息,如会话第二个用户ID存在。
如何以最佳方式管理它,但查询字符串除外?
如果你真的不想要显示的ID查询字符串中,您可以在ViewState存储值。这些是页面实例特定的,将在回发期间生存,但不会在重定向中生存。
因此,也许你需要做的:
- 存放在会话中的ID
- 重定向到详细信息页面
- 检查的ViewState:
- 如果有一个值,可以使用它;
- 从其他会话复制到ViewState中
在这种情况下,你必须使用查询字符串
<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
}
的更多信息:
使用[TryParse](https://msdn.microsoft.com/en-us/library/system.int32.tryparse(v = vs.110).aspx)而不是Convert.ToInt32。否则,如果UserId无效,它将引发异常。 – Win
最好的方法*的*查询字符串 –
Tahnks @Hans合成聚合物膜,我已经在问题中提到,如果我可以使用任何其他的东西? – user1926138