2013-04-02 1 views
0

У меня есть действие контроллера, которое использует PredicateBuilder для создания динамического запроса linq. Я хочу передать результаты этого запроса на частичный вид. Каков наилучший способ сделать это? Если лучше всего использовать строго типизированные представления, должна ли моя модель представления, что я передаю действие контроллера, список, в который я могу передать результаты запроса? Или это просто дополнительные накладные расходы, используя два списка?Как получить результаты динамического запроса linq (PredicateBuilder linq для объектов) в частичном представлении в MVC 4?

Вот упрощенная версия действия контроллера:

[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 в контроллере и просмотр для передачи данных:

http://weblogs.asp.net/hajan/archive/2010/12/11/viewbag-dynamic-in-asp-net-mvc-3-rc-2.aspx

0

Сильно типизированные являются предпочтительным способом. Вы также можете передавать данные в представление через объект Viewbag и ссылаться на Viewbag в самом представлении.

Смежные вопросы