2012-07-03 1 views

ответ

2

Давайте предположим, что ваши две моделей являются экземплярами MyModel и MyOtherModel.

Я могу думать о двух вариантах:

  1. Pass MyModel как модель и положить MyOtherModel в ViewBag.
  2. Создайте класс MyBigModel с свойством MyModel и другим свойством MyOtherModel и передайте MyBigModel в качестве модели.

Вариант 1 действительно не является идеальным решением. Так как ваша модель должна относиться к вашему мнению (именно поэтому я предпочитаю имя ViewModel), я бы действительно пойти на вариант 2.

Вариант 2 будет выглядеть следующим образом:

public class MyBigModel 
{ 
    public MyModel { get; set; } 
    public MyOtherModel { get; set; } 
} 
+1

Стоит упомянуть, вариант 1 очень плохой и не рекомендуется делать это. – archil

+0

Вы правы, я добавлю это. –

2

Использование ViewModel - создать более модель, которая будет содержать обе модели, и отправить его для просмотра

public class MyCustomViewModel 
{ 
    public MyFirstModel First { get; set; } 
    public MySecondModel Second { get; set; } 
} 

и контроллер

public ActionResult Action() 
{ 
    MyFirstModel first = new MyFirstModel(); 
    MySecondModel second = new MySecondModel(); 

    MyCustomViewModel model = new MyCustomViewModel(); 
    model.First = first; 
    model.Second = second; 

    return View(model); 
} 

Как правило, как следует из названия, вы должны использовать пользовательский ViewModel для каждого представления в своем приложении, а затем использовать такие инструменты, как AutoMapper, чтобы отображать эти модели представлений взад и вперед по моделям доменов. Просмотр моделей дает вам большую гибкость при составлении вашего представления, так как вы можете придать им любую форму и форму без изменения домена.

+0

+1 для Automapper дает вам большую гибкость :) – Yasser

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