Asp.net 具有多型号和查找表的MVC3搜索屏幕
我将开发一个搜索页面,在那里我将有多个来自不同模型(实体)的字段提交。此外,我在同一屏幕上有多个Asp.net 具有多型号和查找表的MVC3搜索屏幕,asp.net,asp.net-mvc-3,entity,Asp.net,Asp.net Mvc 3,Entity,我将开发一个搜索页面,在那里我将有多个来自不同模型(实体)的字段提交。此外,我在同一屏幕上有多个DropDownLists,其值将从查找表填充 我想知道(在这种情况下)什么是最好的方法。我是否应该创建一个ViewModel并将该模型传递给我的视图?还是我需要一种不同的方法 但我不确定应该如何处理从查找表填充的下拉字段 另外,在提交页面时,我应该如何在下一个搜索详细信息屏幕中获取这些值,以从db获取所有记录 我将MVC3与EF 4.2一起使用绝对,最好的方法绝对是使用ViewModel。这样就足够
DropDownList
s,其值将从查找表填充
我想知道(在这种情况下)什么是最好的方法。我是否应该创建一个ViewModel
并将该模型传递给我的视图?还是我需要一种不同的方法
但我不确定应该如何处理从查找表填充的下拉字段
另外,在提交页面时,我应该如何在下一个搜索详细信息屏幕中获取这些值,以从db获取所有记录
我将MVC3与EF 4.2一起使用绝对,最好的方法绝对是使用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; }
}
您可以在控制器的操作方法中使用大量的
SelectListItem
对象填充SelectList
对象,这些对象将此ViewModel传递给视图。拥有一个具有必要属性(您的搜索条件)的ViewModel是一个不错的选择。
当您为搜索执行HttpGet操作时,从查找表加载所有数据并加载到属性(例如:States等)
因此,我将创建一个仅具有必要搜索属性的viewmodel。这意味着我不需要在我的viewmodel中引用我的整个models属性。还有一件事,在搜索结果时,我需要首先使用外部db搜索某个关键字段,如果找到,它将使用当前db搜索整个字段。我的问题是我已经有了一个搜索条件的查询,我可以在我的EF上使用该查询吗?您是否有任何示例或链接来实现此目的。@PrasantaBiswal:是的,请在搜索表单中使用您想要的任何字段作为属性。
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);
}