为什么在会话变量的情况下不能直接在页面类中声明?

时间:2011-06-04 12:45:57

标签: c# asp.net session

我的问题是一行,但这让我很困惑。 为什么我不能在页面的部分类中声明和初始化会话变量,它会抛出错误说

  

错误1类中的标记'['无效,   struct或接口成员   声明E:\ ASP.NET \ Trial \ statemanagement.aspx.cs 17 12 E:\ ASP.NET \ Trial \

下面是我试过的代码

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class statemanagement : System.Web.UI.Page
{
    int count=0;
    Session["FirstName"] = 0;
    protected void Page_Load(object sender, EventArgs e)
    {
     if(!IsPostBack)
     {
         count = int.Parse(Session["FirstName"].ToString());
     }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        Response.Write(count.ToString());
        Session["FirstName"] =++count;

    }
}

我没有得到计数变量的错误我不知道为什么?

任何帮助都将被视为感谢

2 个答案:

答案 0 :(得分:3)

这不是宣言。这是一项任务。您不能将赋值语句直接放在类中。您必须将其放在方法或属性中。

参考ASP.NET Session State Overview

  

会话变量存储在一个   SessionStateItemCollection反对   暴露在外面   HttpContext.Session财产。在一个   ASP.NET页面,当前会话   变量通过   Page对象的Session属性。

     

会话变量的集合是   由变量名称索引或   通过整数索引。会话变量   是通过引用来创建的   会话变量的名称。你不   必须声明一个会话变量或   明确地将它添加到集合中。

如果您想独立于页面初始化会话变量,可以使用{em> global.asax 中可以找到的Application_StartSession_Start等应用程序事件处理程序。档案。

答案 1 :(得分:1)

您不能在方法范围之外执行Session["FirstName"] = 0;。尝试将其向下移动到Page_Load内。