0

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

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

前任 :

在内容 Page1.aspx.cs

会话["UserId"] = "USR15289";

在母版页.aspx

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

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

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

问题是会话变量在第一次单击时不显示,而仅在第二次单击时显示。

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

4

2 回答 2

0

根据我的经验:

使用 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);
}

请参阅此链接

于 2017-11-29T07:28:15.057 回答
0

你的代码没有错。先了解你的需求。您必须首先调用已为会话变量赋值的页面。

在您的情况下,您首先单击 Page1。在访问类似的内容之前,请确保检查会话不为空

if( session["UserID"] != null )
   {
   }
于 2017-11-29T07:57:58.540 回答