会话变量和母版页

Session variable and Master page

在我的 ASP.Net 应用程序中,我使用了 1 个母版页和 2 个内容页。 我需要跨应用程序访问单个用户的会话变量,例如 "UserID"。

我只在内容页面设置这个变量,所以根据这个变量,当打开另一个内容页面时,它应该提示消息。

例如:

在内容中Page1.aspx.cs

Session["UserId"] = "USR15289";

硕士Page.aspx

试图在 JS 中访问该会话变量

var UserId= '<%=Session["UserId"] %>';

当我点击内容页面 1 时,会话变量设置正确。现在我单击内容页面 2,但母版页中的会话变量显示为“”。然后,如果我再次单击内容页面 1,现在会话变量显示为 "USR15289".

问题是 Session 变量在第一次点击时不显示,但仅在第二次点击时显示。

可能是什么问题?我错过了什么吗?

据我经验:

使用 Cookie 比使用 Session 更好。

Response.Cookies["userName"].Value = "patrick";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

回读:

if(Request.Cookies["userName"] != null)
    Label1.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

if(Request.Cookies["userName"] != null)
{
    HttpCookie aCookie = Request.Cookies["userName"];
    Label1.Text = Server.HtmlEncode(aCookie.Value);
}

看到这个link

你的代码没有问题。先了解您的需求。 您必须先调用已完成会话变量赋值的页面。

在您的例子中,您首先点击了第 1 页。 在访问

之类的内容之前,请确保检查会话不为空
if( session["UserID"] != null )
   {
   }