Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > MVC и сложная модель формы


Автор: Ruzl 17.5.2012, 14:55
Доброго времени суток.
Столкнулся с следующей проблемой:
есть некая таблица, которая связана с другой таблицей. для примера: автомобиль и владелец. 
на форме создания необходимо отобразить поля автомобиля (вин, бренд, модель) и владельца (фио, год рождения и т.д.). По нажатию на кнопку сабмит контроллер должен сохранить в соответствующие таблици данные по автомобилю и владельцу.

в проекте использую EF и ASP MVC 3. пытаюсь сделать так:

Код

[HttpGet]
public ActionResult Create()
{
     Vahicle v = new Vehicle();
     Owner ow = new Owner();
     v.Owner=ow;
     return View(v);
}
[HttpPost]
public ActionResult Create(Vehicle v)
{
    Owner own = v.Owner;
   //тут v.Owner - пустой
}


Собственно вопрос в следующем - как правильно реализовать такой сценарий работы, при котором на форме одновременно может изменяться 2 модели ? 
Заранее благодарен.

Автор: Ruzl 18.5.2012, 11:09
Нашел такой вариант:
Создаем новую модель, в которой будут храниться 2 объекта

Код

public class ViewModel
{
      public Vehicle Vehicle{get;set;}
      public Owner Owner{get;set;}

      ....
}


в конструкторе можно создавать эти объекты или передавать по ссылке.
Далее - для каждого из них делаем частичное представление, указывая в качестве модели ViewModel.
затем в методе, который обрабатывает Post, используем биндинг с префиксами:

Код

  [HttpPost]
  public ActionResult Create(ViewModel model,
             [Bind(Prefix = "Vehicle")] 
              Vehicle vehicle,
             [Bind(Prefix = "Owner")]
              Owner owner)
{

}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)