#c# #asp.net #session
#c# #asp.net #сеанс
Вопрос:
reader = server.ExecuteReader(CommandType.Text, getPermissionlistQuery, param);
var results = new List<string>();
while (reader.Read())
{
results.Add(reader["permissionName"].ToString());
}
reader.Close();
Session.Add("Permissions", results);
Я добавляю результаты в сеанс, как я могу получить их на другой странице.
результаты — это список значений
var permissionList = Session["Permissions"];
string check = "Create Groups";
if (permissionList.Any(item => item.Equals(check)))
{
// results contains the value in check
}
и я хочу проверить, доступно ли разрешение в списке разрешений, но оператор if выдает ошибку
'object' does not contain a definition for 'Any' and no extension method 'Any' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
Комментарии:
1. Какую часть «НЕ ИСПОЛЬЗОВАТЬ ЭТОТ ТЕГ» в описании тега
asp
вы не поняли?
Ответ №1:
ОБНОВЛЕНО: измените нижний код на этот:
IList<String> collection = (IList<String>) Session["Permissions"];
string check = "Create Groups";
if (collection.Any(item => item.Equals(check)))
{
// results contains the value in check
}
Кроме того, ссылка:
using System.Collections.Generic;
using System.Linq;
Комментарии:
1. Исправил ваш код для вас. Спасибо за ответ, он привлек мое внимание :).
Ответ №2:
Просто позвоните String value = (String)Session["Key"];
, чтобы получить значение
Session["Key"]
извлечет значение в сеансе для этого ключа. Если ключ не существует, он вернет Null.
Возможно, вы захотите прочитать ASP.NET Сессия тоже.
Обновить
В ответ на ваше редактирование убедитесь, что у вас есть ссылки на Linq для вашего проекта. Any — это расширение Linq.
Комментарии:
1. @John обновил ответ. Any — это метод расширения, добавленный Linq. Убедитесь, что у вас есть System.Core.dll в качестве ссылочной сборки для вашего проекта и инструкции Using System.Linq; вверху.
Ответ №3:
Похоже, что список разрешений заполняется, т.Е. Код для извлечения данных из сеанса работает нормально. Если бы это было не так, вы бы получили исключение NullReference.
Я предполагаю, что настоящим виновником является ключевое слово «var». Когда вы извлекаете список разрешений из сеанса, он извлекается как «Объект». Попробуйте явно использовать объект permissionList, т.е.
List<string> permissionList = Session["Permissions"];
или
var permissionList = (List<string>)Session["Permissions"];