会话变量可以是int
吗?我想在每次加载页面时增加Session["PagesViewed"]+1;
。我在尝试增加会话变量时遇到错误。
if (Session["PagesViewed"].ToString() == "2")
{
Session["PagesViewed"] = 0;
}
else
{
Session["PagesViewed"]++;
}
答案 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;