#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, независимо от того, как вы планируете отображать их позже (используя шаблоны или что-то еще)