具有多个模型和查找表的MVC3搜索屏幕

时间:2012-03-07 12:50:39

标签: asp.net asp.net-mvc-3 entity

我将开发一个搜索页面,我将从不同的模型(实体)中提交多个字段。此外,我在同一屏幕上有多个DropDownList,其值将从查找表中填充。

我想知道(在这种情况下)什么是最好的方法。我应该创建一个ViewModel并将该模型传递给我的视图吗?或者我需要一种不同的方法吗?

但是我不知道如何处理我的下拉字段,它是从查找表中填充的。

此外,在提交页面时,我应该如何在下一个搜索详细信息屏幕中获取这些值以从db获取所有记录?

我正在使用MVC3和EF 4.2

2 个答案:

答案 0 :(得分:1)

当然,最好的方法绝对是使用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,并将此ViewModel传递给视图。

答案 1 :(得分:1)

拥有具有必要属性(您的搜索条件)的ViewModel是可行的方法。 当您为搜索执行HttpGet操作时,从查找表中加载所有数据并加载到属性(例如:States等..)。

  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); 
  }