我将开发一个搜索页面,我将从不同的模型(实体)中提交多个字段。此外,我在同一屏幕上有多个DropDownList
,其值将从查找表中填充。
我想知道(在这种情况下)什么是最好的方法。我应该创建一个ViewModel
并将该模型传递给我的视图吗?或者我需要一种不同的方法吗?
但是我不知道如何处理我的下拉字段,它是从查找表中填充的。
此外,在提交页面时,我应该如何在下一个搜索详细信息屏幕中获取这些值以从db获取所有记录?
我正在使用MVC3和EF 4.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);
}