2015-04-08 3 views
0

Возможно ли создать сеанс в классе?Создание сеансов в классах

Я пытаюсь это в моем классе аутентификации:

HttpContext.Current.Session["user"]["name"] = "firstname"; 

Однако я получаю эту ошибку:

Error 342 Cannot apply indexing with [] to an expression of type 'object'

Кто-нибудь знает почему?

+1

Вы, вероятно, означает, this 'HttpContext.Current.Session [" user "] = '' somevalue ' –

ответ

1

Классы могут быть добавлены к сеансу. Например, вы можете создать класс:

public class User 
{ 
    public string FirstName { get; set ;} 
    public string LastName{ get; set; } 
} 

Затем сохранить его в сессии:

User user = new User() { FirstName = "Jon", LastName = "Doe" }; 
HttpContext.Current.Session["user"] = user; 

Затем, чтобы получить пользователя от сеанса вы могли бы сделать:

User user = HttpContext.Current.Session["user"] as User; 
string firstName = user.FirstName; // "Jon" 
string lastName = user.LastName; // "Doe 
+0

Если я получаю информацию из таблицы данных и хочу хранить информацию из данных в сеансе в отдельности, можно ли сохранить строку из данных в сеанс? Или это лучший альтернативный способ для этого? – Samrikan

+0

Я думаю, что технически можно было бы хранить DataRow в сеансе, однако я думаю, что создание класса для хранения данных, вероятно, является лучшим подходом. Ваш метод, который возвращает данные, может вместо этого вернуть класс. Это упростит, когда вы вернете объект сеанса обратно в класс. – RandomWebGuy

+0

Итак, в основном отправляйте данные, полученные из DataRow, в класс, а затем отправляйте их обратно в метод хранения в сеанс? – Samrikan

3

Сеансы ключей/значений не хранятся в jagged arrays. Они доступны как одного массива измерений:

HttpContext.Current.Session["username"] = "firstname"; 

Помните, что сеансы сохраняются для каждого пользователя на стороне сервера, чтобы они могли в конечном итоге дорого. Используйте их с умом.

Также рассмотрите, извлекая значения сеанса в классах Page, а затем передайте их на ваш class. Существует некоторая взаимосвязанная дискуссия here

+0

Итак, для каждого значения, которое я хочу сохранить в сеансе, мне нужно было бы создать еще один одномерный массив? – Samrikan

+0

@Samrikan, не уверен, что вы подразумевается под * другим сигнальным размерным массивом *, но вот что вам нужно сделать, чтобы сохранить другое значение 'HttpContext.Current.Session [" SomeOtherValue "] =" Value ";' – Habib

+0

Да, если бы я хотел сохранить фамилию, я бы нужно сделать это снова? Разве вообще невозможно создать многомерный многоуровневый сеанс? – Samrikan

Смежные вопросы