Int会话变量增加?

时间:2011-12-31 20:23:31

标签: c# session variables session-variables

会话变量可以是int吗?我想在每次加载页面时增加Session["PagesViewed"]+1;。我在尝试增加会话变量时遇到错误。

if (Session["PagesViewed"].ToString() == "2")
{
     Session["PagesViewed"] = 0;
}
else
{
     Session["PagesViewed"]++;
}

3 个答案:

答案 0 :(得分:8)

您需要先测试Session变量是否存在,然后再使用它并分配给它。

您可以按如下方式进行增量。

Session["PagesViewed"] = ((int) Session["PagesViewed"]) + 1;

但是,如果Session["PagesViewed"]不存在,则会导致错误。在增量之前进行快速null测试应该对其进行排序。

if (Session["PagesViewed"] != null)
    Session["PagesViewed"] = ((int)Session["PagesViewed"]) + 1;

答案 1 :(得分:2)

Session["PagesViewed"]只返回一个对象 - 这就是您的.ToString()通话有效的原因。你需要将它强制转换为int,然后将其递增,然后将其放回会话中。

答案 2 :(得分:2)

是的,它可以。但是,++仅在编译器知道对象为int时才有效。如何知道代码的其他部分不会偷偷摸摸地进行Session["PagesViewed"] = "Ha-ha";

你可以通过强制转换有效地告诉编译器你不会做那样的事情:如果会话变量实际上不是int,你将得到一个运行时异常。

int pagesViewed = (int)Session["PagesViewed"];
if (pagesViewed == 2)
{
    pagesViewed = 0;
}
else
{
    pagesViewed++;
}
Session["PagesViewed"] = pagesViewed;