所以我有一个
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
createSession();
pageCounter.Text = Session["PagesViewed"].ToString();
return;
}
Session["PagesViewed"] = ((int)Session["PagesViewed"] + 1);
pageCounter.Text = Session["PagesViewed"].ToString();
}
protected void createSession()
{
Session["PagesViewed"] = 0;
}
我想隐藏在用户访问我们网站上的3个页面之后。所以我在master.cs页面上使用了page_load来创建会话
{{1}}
这段代码编译并测试出来,我设置了一个标签作为计数器,所以我可以看到它正常工作。问题是,每次都是0。它没有增加。我不确定我的错误在哪里。
答案 0 :(得分:5)
您的函数CreateSession会在每次首次加载页面时将值重置为0.
这可能应该在你的会话开始。
或者在设置之前检查它是否存在:
protected void createSession()
{
if(Session["PagesViewed"] == null)
{
Session["PagesViewed"] = 0;
}
}
答案 1 :(得分:2)
删除return;
if (!IsPostBack){}
您的代码将在每个页面加载中增加会话值。我'我不确定确切的要求无论如何更好的选择是:
if (!IsPostBack)
createSession();
else
{
Session["PagesViewed"] = (int)Session["PagesViewed"]+ 1;
}
pageCounter.Text = Session["PagesViewed"].ToString();
还有另一项更改,您只需在尚未创建会话时创建会话,因此createSession()
方法签名将更改为:
protected void createSession()
{
if (Session["PagesViewed"] == null) { Session["PagesViewed"] = 0;};
}