Я бы вместо этого вернул ViewModel. Обычно вы можете использовать его для отправки данных в / из View и контроллера.
В настоящее время я работаю над большим проектом, и ViewModels работают очень хорошо для меня.
Проверьте это короткое видео:
https://www.youtube.com/watch?v=m086xSAs9gA
UPDATE
Я предполагаю, что ваш запрос работает правильно (я его не читал).
Чтобы отправить ваши данные через ViewModel в View.
Сначала создайте необходимые классы ViewModel:
public class PageNameViewModel
{
public string Name { get; set; }
public IEnumerable<ResortDetailViewModel> ResortDetailViewModels { get; set; }
... rest of properties are not shown for clarity ...
}
public class ResortDetailViewModel
{
public string Detail1 { get; set; }
public int Detail2 { get; set; }
... etc. ...
}
Теперь используйте ViewModels в контроллере (или, скажем, заполните данные в viewmodel):
var viewModel = (from rd in _db.ResData
join ra in _db.ResAvailability on rd.RecNo equals ra.RecNoDate
where ra.TotalPrice < Int32.Parse(resDeals.priceHighEnd) && ra.TotalPrice > Int32.Parse(resDeals.priceLowEnd)
.Take(10)
select new ClassNameViewModel
{
Name = rd.Name,
ImageUrl = rd.ImageUrl,
ResortDetailViewModels = rd.ResortDetails.Select(o =>
new ResortDetailViewModel
{
Detail1 = o.detail1,
Detail2 = o.detail2,
... etc. ...
},
CheckIn = ra.CheckIn,
Address = rd.Address,
TotalPrice = ra.TotalPrice
});
return View(viewModel);
Теперь вы можете использовать ViewModel в представлении (я полагаю, вы знаете, как, когда вы наблюдали за представлением, которое я связал).
Обратите внимание, что в этом случае ViewModels в идеале должна содержать примитивные данные (это облегчит вашу жизнь, если вы позже планируете сериализовать ViewModel и отправить ее другому клиенту).
В приведенном выше коде я преобразовал любые сложные типы в примитивные типы, и это должно быть на каждом элементе (обратите внимание, я сделал то же самое на ResortResults
, так как я преобразовал их в массив ViewModel, то есть массив объекты, которые содержат только примитивные данные, поэтому нет глубокой иерархии).
Я также переместил Take(10)
в верхнюю часть кода, поэтому вам не нужно создавать ViewModel для каждого элемента, а затем взять только 10! это просто напрасная трата производительности. Перемещая его в верхнюю часть, мы берем 10 элементов перед созданием ViewModels, то есть мы создаем ViewModels только для необходимых элементов.
Надеюсь, это поможет. Если вам нужна дополнительная помощь, пожалуйста, скажите мне.