簡體   English   中英

如何在MVC 4的局部視圖中訪問動態linq查詢的結果(PredicateBuilder linq到實體)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM