Шаблон отправки нескольких объектов в представление в ASP.NET MVC - PullRequest
1 голос
/ 31 января 2010

Я делаю свой первый проект в ASP.NET MVC и в качестве руководства использую пример проекта NerdDinner из книги ScottGu. В его проекте все его строго типизированные представления аккуратно соответствуют объектам, которые он определил (например, Ужин). Это не совсем реальность бизнес-приложения.

Например, в моем приложении страница (например, представление) получает большую часть своей информации от первичного объекта, из которого был создан строго типизированный вид. Но он также должен отображать информацию из десятка других объектов.

Итак, какова предпочтительная схема передачи всей этой информации в представление?

  • Передать ли основной объект через модель, а остальную информацию - через ViewData?
  • Создаю ли я главный объект для каждого просмотра, который охватывает все данные, которые могут понадобиться для этой страницы?
  • Есть ли лучший подход?

Ответы [ 4 ]

4 голосов
/ 31 января 2010

«Главный объект для каждого вида» называется Модель вида . Это мое предпочтительное решение.

4 голосов
/ 31 января 2010

Вы можете определить свой строго типизированный View с помощью объекта передачи данных .

Пример: вашему View нужен список Student и список Teacher, тогда вы можете определить объект передачи данных (оболочку):

public class FrontPageDTO
{
    public List<Student> StudentList { get; set; }
    public List<Teacher> TeacherList { get; set; }
}

Затем передайте экземпляр этого DTO вашему View.

1 голос
/ 31 января 2010

Попробуйте реализовать ViewModels для вашего приложения. Вот пример создания простой ViewModel.

http://highoncoding.com/Articles/659_Implementing_ViewModel_in_ASP_NET_MVC_Application.aspx

1 голос
/ 31 января 2010

В дополнение к моделям представления вы можете использовать фильтры действий для передачи «справочных данных» от контроллеров к представлениям. См. статью об этом.

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