Экран поиска MVC3 с несколькими моделями и справочной таблицей - PullRequest
2 голосов
/ 07 марта 2012

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

Я хотел бы знать (в этом сценарии), каков наилучший подход.Должен ли я создать ViewModel и передать эту модель на мой взгляд?Или мне нужен другой подход?

Но я не уверен, как мне обращаться с моим выпадающим полем, которое заполняется из справочной таблицы.

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

Я использую MVC3 с EF 4.2

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Наличие ViewModel с необходимыми свойствами (ваши критерии поиска) - это путь. Когда вы выполняете действие HttpGet для своего поиска, загружаете все данные из справочных таблиц и загружаете в свойства (например: Состояния и т. Д.).

  public ActionResult Search()
  {
    SearchViewModel objVM=new SearchViewModel();
    objVM.States=MyService.GetStates();
    objVM.Type=MyService.GetUserTypes();    
    return objVM.    
  }

  [HttpPost]  
  public ActionResult Search(SearchViewModel objVM)
  {
      if(ModelState.IsValid)
      {
         //Go for the search and return results

      } 
      return View(objVm); 
  }
1 голос
/ 07 марта 2012

Безусловно, лучший подход - использовать ViewModel.Приблизительно этого было бы достаточно:

public class Model1
{
    public string Prop1 { get; set; }
}

public class Model2
{
    public string Prop2 { get; set; }
}

public class ViewModel1
{
    public Model1 Model1 { get; set; }
    public Model2 Model2 { get; set; }
    public SelectList DropDownItems { get; set; }
}

Вы должны заполнить SelectList количеством SelectListItem объектов в методе действий вашего контроллера, который передаст эту модель представления в представление.

...