我在理解这个问题时遇到了一些麻烦。
我正在尝试设置Cookie并使用ASP.NET + C#在页面上显示该值。
这是我的代码:
protected void lbChangeToSmall_Click(object sender, EventArgs e)
{
Response.Cookies["fontSize"].Value = "small";
}
和
<asp:LinkButton runat="server" id="lbChangeToSmall" Text="A" CssClass="txt-sm" OnClick="lbChangeToSmall_Click"></asp:LinkButton>
最后
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Response.Write( Request.Cookies["fontSize"].Value);
}
}
当我点击按钮时,页面上没有显示任何内容,但实际设置了cookie。如果我刷新页面,则会显示cookie。
所以似乎cookie设置正确但应用程序无法立即读取它。
我试图摆脱if(postBack):
protected void Page_Load(object sender, EventArgs e)
{
Response.Write( Request.Cookies["virgilFontSize"].Value);
}
但它没有改变一件事。
我做错了什么?
谢谢!
答案 0 :(得分:4)
在lblChangeToSmall_Click
事件后触发Page_Load
事件。因此,在随后的回发之前,请求中不会提供cookie写入。
虽然它会立即在客户端上发布。
答案 1 :(得分:0)
第一次,请求没有cookie(尚未);在响应设置后,它只会第二次出现。因此,您的代码必须处理Request.Cookies
可能 "fontSize"
条目的可能性,并在这种情况下提供正确的默认值。例如:
HttpCookie cookie = Request.Cookies.Get("fontSize");
// Check if cookie exists in the current request.
if (cookie == null)
{
Response.Write( "Defaulting to 'small'.");
}
else
{
Response.Write( Request.Cookies["fontSize"].Value);
)