как получить доступ к сессии в виде asp.net MVC - PullRequest
0 голосов
/ 15 апреля 2011

Я использую MVC 3 с двигателем с искровым обзором. У меня есть данные, которые должны быть доступны на каждой странице, база данных на основе информации для входа пользователя. поэтому я собираю данные при входе пользователя в систему и помещаю их в сеанс. Я использую элемент управления для обработки данных в главной странице сайта (главной странице). и данные в сеансе будут привязаны к этому элементу управления (например, Dropdownlist).

это лучший метод для обработки данных на главной странице asp.net MVC? Я пытаюсь создать базовый класс для контроллера, но я не могу сохранить учетные данные для входа (HttpContext.User.Identity). как я могу получить доступ к данным сеанса из View?

Я пытаюсь использовать @Session ["mydata"] (! {Session ["mydata"] в движке искрового представления}, но это не работает: (

любой помогает?

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Есть два основных способа справиться с этим. Одним из них является использование Html.RenderAction из вашего макета (главной страницы). Таким образом, вы заранее упаковываете все свои данные в модель, которую будет использовать главная страница.

Второй способ заключается в том, что ваши контроллеры наследуются от другого контроллера. Когда базовый контроллер создается, он отвечает за заполнение ViewData необходимыми данными, которые затем отображаются на странице. Это требует от всех ваших контроллеров наследования от вашего базового контроллера. См. Листинг 4/5 по адресу: http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs

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

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

вы можете использовать TempData ["name"] для обмена данными о различных действиях в контроллере.Помните, что когда значение получено, оно удалит данные, но вы можете использовать функциональность метода .Peek и .Keep для хранения его значения

0 голосов
/ 16 апреля 2011

Вы должны иметь возможность получить учетные данные вошедшего в систему пользователя, вызвав System.Threading.Thread.CurrentPrincipal.Identity.Name в базовом классе контроллера.

Это должно позволить вам заполнить ViewData и затем получить доступ к данным из вашего представления.

В качестве альтернативы, если вы все еще хотите использовать сеанс, вы можете получить доступ к сеансу через - HttpContext.Current.Session ["mydata"]

...