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

本文关键字:声明 变量 会话 情况下 为什么 不能 | 更新日期: 2023-09-27 17:58:19

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

错误1类中的令牌"["无效,结构或接口成员声明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;
    }
}

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

任何帮助都将视为感谢

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

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

参考ASP.NET会话状态概述

会话变量存储在SessionStateItemCollection对象通过HttpContext.Session属性。在ASP.NET页,当前会话变量通过Page对象的会话属性。

会话变量的集合是按变量名称索引,或通过整数索引。会话变量通过引用会话变量的名称。你没有必须声明会话变量或显式地将其添加到集合中。

如果您想独立于页面初始化会话变量,可以使用应用程序事件处理程序,如Application_StartSession_Start,它们可以在global.asax文件中找到。

不能在方法范围之外执行Session["FirstName"] = 0;。试着把它移到Page_Load里面。