【发布时间】:2014-09-27 02:33:15
【问题描述】:
按照我之前在 stackoverflow 中的帮助进行讨论: Show a div in asp.net on condition
我有一个 ASP.NET 页面,其中包含一个 HTML 中的网络表单,具有 javascript 代码集 cookie。 (我知道 javascript 正在设置 cookie,因为我可以通过 ctrl+shift+I 的组合在 google chrome 中看到它们)。
我在这个解决方案背后的代码中写了为了显示/不显示基于 value 库克集的表单:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie myCookie = new HttpCookie("tempcookieforclose");
myCookie = Request.Cookies["tempcookieforclose"];
// Read the cookie information and display it.
if (myCookie != null)
webform.Visible = false;
else
webform.Visible = true;
那行不通。这个例子也不能显示是否在输出中设置了 cookie 名称:
HttpCookie myCookie = new HttpCookie("MyTestCookie");
myCookie = Request.Cookies["MyTestCookie"];
// Read the cookie information and display it.
if (myCookie != null)
Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value);
else
Response.Write("not found");
(我把 MyTestCookie 改成了“mycookie”)
我还发布了为我的网络表单设置 cookie 的功能:
function tempcookie() {
days = 1; // number of days to keep the cookie
myDate = new Date();
myDate.setTime(myDate.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = 'cookieName=cookieclose; expires=' + myDate.toGMTString();
function permacookie() {
days = 30; // number of days to keep the cookie
myDate = new Date();
myDate.setTime(myDate.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = 'cookieName=cookiesignup; expires=' + myDate.toGMTString();
}
【问题讨论】:
-
服务器端先于客户端运行。因此,您必须刷新页面才能让服务器端看到客户端设置的 cookie。
-
是的,这就是服务器检查 cookie 是否设置并决定显示/不显示网络表单的原因。网络表单设置了 cookie。意味着我第一次进入该页面时,由于未设置 cookie,因此出现了网络表单。通过单击网络表单中的“关闭”,cookie 被设置,因此下次重新加载页面时,网络表单不应该显示,但显然不适用于我的代码:)
-
我在帖子中写的是正确的。问题是我使用 cookie 的值而不是 cookie 的名称作为变量。 :)
标签: javascript c# asp.net cookies