#c# #asp.net #session
#c# #asp.net #сессия
Вопрос:
Мой вопрос состоит из одной строки, но это меня очень смущает. Почему я не могу объявить и инициализировать переменную сеанса в частичном классе страницы, она выдает ошибку со словами
Ошибка 1 Недопустимый токен ‘[‘ в объявлении класса, структуры или элемента интерфейса E:ASP.NETTrialstatemanagement.aspx.cs 17 12 E:ASP.NETTrial
ниже приведен код, который я пробовал
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;
}
}
я не получаю ошибку для переменной count, я не знаю, почему?
Любая помощь будет рассмотрена благодаря
Ответ №1:
Это не объявление. Это присваивание. Вы не можете поместить оператор присваивания непосредственно внутри класса. Вы должны поместить это внутри метода или свойства.
Ссылаясь на ASP.NET Обзор состояния сеанса
Переменные сеанса хранятся в объекте SessionStateItemCollection, который предоставляется через свойство HttpContext.Session. В ASP.NET страница, переменные текущего сеанса отображаются через свойство Session объекта Page.
Коллекция переменных сеанса индексируется по имени переменной или целочисленным индексом. Переменные сеанса создаются путем обращения к переменной сеанса по имени. Вам не нужно объявлять переменную сеанса или явно добавлять ее в коллекцию.
Если вы хотите инициализировать переменные сеанса независимо от страницы, вы можете использовать обработчики событий приложения, такие как Application_Start
и Session_Start
, которые вы можете найти в глобальном файле.asax .
Комментарии:
1. позвольте мне прояснить, что присвоение возможно в частичном классе, поскольку я знаю, что могу присвоить значение в int count, оно вообще не создает исключений 🙂
2. @Devjosh: Позвольте мне поправить вас, дорогой, вы можете присвоить значение переменной непосредственно внутри класса только тогда, когда вы ее объявляете .. Опять же,
Session["Key"] = value;
это не объявление, а только присвоение.
Ответ №2:
Вы не можете делать Session["FirstName"] = 0;
вне области действия метода. Попробуйте переместить его вниз, чтобы оно было внутри Page_Load
.
Комментарии:
1. я знаю и сделал это таким образом, но я просто хочу разобраться, почему это в любом случае не разрешено, а также я могу присвоить значение count var, которое имеет тип int, чтобы оно работало нормально? Спасибо