Запутанный результат с @Session ["thing_here "] (C # / Razor) - PullRequest
1 голос
/ 06 июня 2011

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

Я знаю, что могу получить Текущий идентификатор пользователя вошедшего в систему человека, например:

@WebSecurity.CurrentUserId

И просто чтобы посмотреть, как используются сеансы, я подумал, что просто сохраню (в качестве примера) CurrentUserId в переменной сеанса, как только пользователь войдет в систему, например:

@Session["UserIDthing"] = @WebSecurity.CurrentUserId;

А затем на другой странице я просто вывожу идентификатор сеанса (который должен быть точно равен 1, потому что это мой UserId), например:

@Session["UserIDthing"]

Но вместо того, чтобы вывести «1msgstr "выводит минус 1" -1 ".Почему это происходит?

enter image description here

И просто чтобы убедиться, что я был прав в отношении идентификатора пользователя, я вывел идентификатор пользователя, используя:

@WebSecurity.CurrentUserId

Ион отображал правильный идентификатор, который просто «1»

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Вероятно, это не имеет ничего общего с Session. Попробуйте сохранить @WebSecurity.CurrentUserId другим способом, чтобы убедиться, что CurrentUserId действительно был установлен после того, как пользователь вошел в систему (возможно, записав его в файл или использовав статическую переменную для тестирования).

0 голосов
/ 06 июня 2011

Чтобы присвоить переменную, вам нужен блок кода, а не блок вывода.Вы должны использовать:

@{ someVar = otherVar; }

Используемый вами синтаксис:

@someVar = @otherVar;

переводится как (псевдокод):

Response.Write(HtmlEncode(someVar));
Response.Write(" = ");
Response.Write(HtmlEncode(otherVar));
Response.Write(";");

Кстати: почемуВы назначаете переменные сеанса в вашем представлении.Это должно быть ответственностью контроллера.

...