Модели MVC для сложной страницы

#asp.net-mvc

#asp.net-mvc

Вопрос:

Я работаю над ASP.Net Проект MVC. Моя индексная страница будет похожа на facebook, что означает, что пользователь может написать сообщение, но также видит сообщения своих друзей, и список его друзей тоже отображается. Это означает, что есть два выхода и один вход.

Как должны выглядеть мои модели для этой страницы? Хорошая ли идея иметь одну IndexModel, содержащую список всех сообщений (List), список всех друзей (List) и класс InputMessage? Или я должен написать одну модель для каждой из них и объединить их в ViewModel?

Спасибо

Ответ №1:

На самом деле лучше всего разделить список друзей, список сообщений или оба в их собственных частичных представлениях. Затем, если вы не хотите, чтобы одно действие контроллера генерировало для них данные, вы можете создать действия для каждого из них и использовать Html.RenderAction для их отображения.

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.childactionextensions.renderaction.aspx

Ответ №2:

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

Для сообщений создайте представление partail, используя функцию jQuery-template. Определите шаблон в соответствии с тем, как отображать сообщения, привяжите шаблон к необработанным данным json (которые в основном будут содержать ваши сообщения) и внедрите это частичное представление в ваше строго типизированное представление.

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

Подробнее о том, как разрабатывать с использованием шаблона jQuery: https://github.com/nje/jquery-tmpl/wiki/List-of-jQuery-tmpl-articles-and-tutorials

Ответ №3:

Друзья и сообщения — это две разные задачи, поэтому они должны быть в разных ActionResults, независимо от того, как вы планируете отображать их позже (используя шаблоны или что-то еще)