2009-06-02 3 views
8

Как вы помещаете строго типизированный объект в ASP.NET MVC на главную страницу?Как поместить данные на главную страницу?

У вас есть класс ViewModelBase, который содержит информацию о главной странице и наследует его для каждой модели представления, или есть лучший подход?

+0

Есть ли допустимый сценарий для этого? В общем виде конкретный контент должен отображаться в представлениях, главная страница должна содержать только общие элементы, которые подходят к тому, что создает представление. –

+0

Возможно, я полностью здесь, но я думал, что буду использовать строго типизированный вид, если мне нужно добавить на главную страницу такие вещи, как текущее имя пользователя и т. Д. Как еще я могу это сделать, если не через ViewModel, который указан на странице? – Alex

+0

Предполагая, что вы используете стандартный метод проверки подлинности, например. Forms Authentication, то может это сделать, используя <% = HttpContext.Current.User.Identity.Name%> –

ответ

10

Алекс,

Я думаю, что вы спрашиваете, «Где моя главная страница контроллера?»

Посмотрите на следующую ссылку. В нем объясняется, как создать «Application Controller», абстрактный класс, который может быть унаследован другими вашими контроллерами, так что вам нужно только написать код один раз, который подталкивает нужные данные главной страницы в представление.

Передача данных для просмотра мастер-страниц:
http://www.asp.net/learn/MVC/tutorial-13-cs.aspx

Кроме того, обратите внимание на следующую ссылку, которая объясняет, как реализовать Частичные представлений и Subcontrollers в ASP.NET MVC:

Частичные запросов в ASP.NET MVC
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

+0

Первый ссылка больше не работает. Новый должен быть [http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs](http://www.asp.net/mvc/tutorials/pass-data-to-view-master-pages-cs) –

3

Это именно тот подход, который я использую. Имеет базовый класс MasterViewData, содержащий информацию, которая может быть общей для всех страниц, и используется для визуализации главной страницы (при входе в систему, когда не используется встроенный аут, сообщения на уровне страницы). Все мои другие классы данных представлений вытекают из него.

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

Мне любопытно, есть ли другие варианты, но этот подход определенно сработал для меня.

0

Мы используем аналогичные базы данных ViewData, особенно для крупных сайтов, ориентированных на контент, где у вас много общего с материалом UI.

Хитрость, которую мы используем для впрыска общего бита, - это использовать ActionFilter, чтобы ввести MasterPageViewModel вокруг наших контроллеров. Это немного чище, чем наличие специального класса контроллера с методом переопределенного представления, поскольку есть определенные места, где вы не хотите/не нуждаетесь. И вся композиция над наследованием.

+0

Есть ли у вас какие-либо примеры кода Wyatt? Мне бы очень понравилось, как вам это удалось. – lloydphillips

Смежные вопросы