我要開發一個搜索頁面,我將有多個字段來自differenet模型(實體)。此外,我在同一屏幕上有多個DropDownList
,其值將從查找表填充。MVC3搜索屏幕與多個模型和查找表
我想知道(在這種情況下)什麼是最好的方法。我應該創建ViewModel
並將該模型傳遞給我的視圖嗎?或者我需要不同的方法?
但我不知道我應該如何處理我的下拉字段,這是從查找表填充。
此外,在提交頁面時,我應該如何在下一個搜索詳細信息屏幕中獲取這些值以獲取db中的所有記錄?
我使用MVC3與EF 4.2
我要開發一個搜索頁面,我將有多個字段來自differenet模型(實體)。此外,我在同一屏幕上有多個DropDownList
,其值將從查找表填充。MVC3搜索屏幕與多個模型和查找表
我想知道(在這種情況下)什麼是最好的方法。我應該創建ViewModel
並將該模型傳遞給我的視圖嗎?或者我需要不同的方法?
但我不知道我應該如何處理我的下拉字段,這是從查找表填充。
此外,在提交頁面時,我應該如何在下一個搜索詳細信息屏幕中獲取這些值以獲取db中的所有記錄?
我使用MVC3與EF 4.2
擁有一個具有必要屬性(您的搜索條件)的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);
}
當然,最好的辦法肯定是使用視圖模型。像這樣的東西就夠了:
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中引用我的整個模型屬性。 – 2012-03-07 22:54:41
還有一件事,在搜索結果時,我需要先用外部數據庫搜索一些關鍵字段,如果找到,那麼它會用當前數據庫搜索整個字段。我的問題是我已經有一個查詢可用於搜索條件,我可以在我的EF上使用該查詢嗎?你有任何樣品或鏈接來實現這一點。 – 2012-03-07 23:06:53
@PrasantaBiswal:可以在搜索表單中使用任何字段作爲屬性。 – Shyju 2012-03-07 23:44:47