[英]How to access results of dynamic linq query (PredicateBuilder linq to entities) in a partial view in MVC 4?
我有一個控制器操作,該操作使用PredicateBuilder構建動態linq查詢。 我想將此查詢的結果傳遞給局部視圖。 做這個的最好方式是什么? 如果最佳做法是始終使用強類型視圖,那么傳遞給控制器操作的視圖模型是否應該具有可將查詢結果傳遞到其中的列表? 還是使用兩個列表只是額外的開銷?
這是控制器動作的簡化版本:
[HttpPost]
public ActionResult BasicPropertySearch(BasicPropertySearchViewModel viewModel)
{
var predicate = PredicateBuilder.True<ResidentialProperty>();
if (ModelState.IsValid)
{
using(var db = new LetLordContext())
{
predicate = predicate.And(x => x.HasBackGarden);
predicate = predicate.And(x => x.HasFrontGarden);
predicate = predicate.And(x => x.HasSecureParking);
predicate = predicate.And(x => x.IsDisabledFriendly);
var results = db.ResidentialProperty.AsExpandable().Where(
predicate).ToList();
return PartialView("_BasicPropertySearchResultsPartial", results);
}
}
ModelState.AddModelError("", "Something went wrong...");
return View("_BasicPropertySearchPartial");
}
如果將列表傳遞給的視圖不是強類型的,如何訪問視圖中的results
?
您應該盡可能使用強類型的視圖模型,但是可以在部分視圖中使用“動態”模型來訪問數據。 或者更常規地使用控制器中的Viewbag動態對象並查看以傳遞數據:
http://weblogs.asp.net/hajan/archive/2010/12/11/viewbag-dynamic-in-asp-net-mvc-3-rc-2.aspx
強類型視圖是首選方法。 您還可以通過Viewbag對象將數據傳遞到視圖,並在視圖本身中引用Viewbag。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.