Извлечение переменных сеанса в ASP.NET MVC 4 (бритва, просмотр)
Я написал много сайтов на PHP. Теперь я должен создать сайт с ASP MVC 4 (C#), и я застрял с сессиями.
IE пользователь должен перейти на страницу входа в систему, ввести свой логин и пароль. Если они правильные, в контроллере я устанавливаю сеанс с UserId, например так:
Session["UserId"] = 10
Это значение UserId используется для отображения PartialViews (форма входа в систему или (после входа в систему) некоторые меню приложения). Как я могу получить этот UserId внутри Razor view?
После этого в View:
if (Session.UserId == 10) { @Html.Partial("LoggedMenu") }
У меня есть исключение со Stackru.:/
3 ответа
Ты делаешь это неправильно...
Session[<item name>]
возвращает строку, вы должны сравнить со строкой, или привести ее, так что либо (int)Session["UserId"] == 10
или же Session["UserId"] = "10"
,
Вы также вызываете свойство, которое не существует Session.UserId
не будет существовать как Session
это как NameValueCollection, вы вызываете его по запросу, это имя элемента.
в конце вы должны написать
@if (Session["UserId"] == "10") {
Html.Partial("LoggedMenu");
}
Вы говорите, что учитесь, поэтому я хотел бы отметить две быстрые вещи:
- Вам следует воспользоваться курсом ASP.NET MVC, который бесплатно доступен на домашней странице http://asp.net/mvc (справа, когда вы читаете "Основные видео")
- Создайте проект MVC3 и посмотрите, как они это делают, когда он будет готов из коробки с членством
@if (Session["UserId"] != null && Session["UserId"] == 10 ) {
Html.Partial("LoggedMenu");
}
Кроме того: для управления идентификацией лучше использовать готовую систему членства
Ниже приведен пример:
контроллер:
if (Session["pageInitCounter"] == null)
{
Session["pageInitCounter"] = 1;
}
else
{
int counter = Convert.ToInt32(Session["pageInitCounter"]);
counter++;
Session["pageInitCounter"] = counter;
}
Посмотреть:
@Html.Hidden("pageInitCounter", Session["pageInitCounter"])
Javascript:
alert($("#pageInitCounter").val());