2013-04-02 40 views
0

我有一個使用PredicateBuilder構建動態linq查詢的控制器操作。我想將此查詢的結果傳遞給部分視圖。做這個的最好方式是什麼?如果最好的做法是始終使用強類型視圖,那麼我傳遞給控制器​​動作的視圖模型是否應該有一個可以將查詢結果傳遞給的列表?或者這僅僅是使用兩個列表的額外開銷?如何在MVC 4的部分視圖中訪問動態linq查詢(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如果視圖傳遞的列表不是強類型?

回答

0

強類型視圖的優選方法。您還可以通過Viewbag對象將數據傳遞給視圖,並在視圖中引用Viewbag。