MVC3 передать @model для частичного просмотра - PullRequest
8 голосов
/ 21 июня 2011

У меня есть два частичных представления, которые в точности совпадают, но для модели @.

@ model Project.Models.X

@ model Project.Models.Y

Как я могу передать этот тип модели представлению, чтобы я мог использовать одно и то же представление для обоих?

Ответы [ 4 ]

5 голосов
/ 22 июня 2011

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

  @{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}

и

 public PartialViewResult MyPartialAction(int? someID)
 {
        return PartialView("MyPartial",SomeModel);
 }
3 голосов
/ 21 июня 2011

Вы можете создать ViewModel Z, которая перешла в View. Если вы хотите передать модель X или Y, просто передайте это Z, а затем передайте модель Z в View.

2 голосов
/ 21 июня 2011

Сделайте так, чтобы оба класса реализовали один и тот же интерфейс, и используйте интерфейс в качестве вашей модели.

Как подсказал Тим: Если возможно, вы также можете наследовать от того же базового класса. Хотя это не всегда возможно, использование интерфейсного подхода в основном возможно.

1 голос
/ 21 июня 2011

В основном как gandil: создайте ViewModel Z, но используйте Automapper для сопоставления с Y и X. Таким образом, вы можете сохранить свои модели пользовательского интерфейса в чистоте и СУХОЙ.

...