MVC3 - Как связать данные с разных взглядов контроллера - PullRequest
1 голос
/ 05 октября 2011

Я занимаюсь этим уже несколько дней, и это вызывает у меня головную боль ...

У меня есть модель клиента, содержащая детали клиента, затем у меня есть модель адреса, содержащая разные адреса для клиентов. Я хочу отобразить таблицу (CRUD) под деталями каждого клиента, когда я нажимаю на ссылку подробностей в таблице (CRUD) клиента. Как мне это сделать?

1 Ответ

0 голосов
/ 05 октября 2011

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

 public class ClientDetailsModel
 {
      public ClientDetails Details { get; set; }
      public List<Address> Addresses { get; set; }
 }


 public ActionResult Details( int id )
 {
       var client = this.ClientRepository.GetByID( id );
       var addresses = this.ClientRepository.GetAddressesForClient( client );
       return View( new ClientDetailsModel { Details = client, Addresses = addresses } );
 }

Это похоже на то, что я бы сделал, хотя более вероятно, что я извлеку только соответствующие свойства и заполнил класс плоской модели для каждой части клиент / адрес, а не использовал бы фактическую сущность из БД.AutoMapper может сильно помочь в этом.

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

  ... display client details...

  @foreach (var address in Model.Addresses)
  {
       @Html.Partial( "_Address", address )
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...