C#会话不会在页面加载时递增

时间:2016-01-25 13:55:14

标签: c# asp.net

所以我有一个

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。它没有增加。我不确定我的错误在哪里。

2 个答案:

答案 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;};
    }