Как получить значение сеанса и сделать проверку на другой странице в asp.net - PullRequest
0 голосов
/ 03 ноября 2011
 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);

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

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?)

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

ОБНОВЛЕНО: измените нижний код на это:

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;

enter image description here

1 голос
/ 03 ноября 2011

Просто позвоните String value = (String)Session["Key"];, чтобы получить значение

Session["Key"] извлечет значение в сеансе для этой клавиши.Если ключ не существует, он вернет значение Null.

Возможно, вы захотите прочитать и Сеанс ASP.NET .

Обновление

В ответ на ваши изменения убедитесь, что у вас есть ссылки на Linq для вашего проекта.Любое является расширением Linq.

0 голосов
/ 03 ноября 2011

Похоже, что accessList заполняется, т.е. код для извлечения данных из сеанса работает нормально. Если бы это не было так, вы бы получили исключение NullReference.

Я предполагаю, что настоящий виновник - это ключевое слово "var". Когда вы извлекаете PermissionList из сеанса, он извлекается как «Объект». Попробуйте явное приведение объекта licenseList, т.е.

List<string> permissionList = Session["Permissions"]; 

или

var permissionList = (List<string>)Session["Permissions"]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...