У меня есть список объектов в моем контроллере.
это выглядит так
{ Driver = System.Data.Entity.Driver_Driver1, Statuss = NotConfirmed }
{ Driver = System.Data.Entity.Driver_Driver2, Statuss = NotConfirmed }
обратите внимание, что Driver является объектом сложного типа.
Контроллер:
var Drivers = _db.Drivers.Where(x => x.DriverCompanyID == id).Where(d => d.CanWorkIn.Where(f => f.CompanyToDriveFor.CompanyID == OwnCompany.CompanyID).Any())
.Select(x => new
{
Driver = x,
Statuss = x.CanWorkIn.FirstOrDefault().Status.ToString()
}).ToList();
ViewBag.ListOfDrivers = Drivers;
return PartialView("_DriverList");
Моя модель
public class DriverViewItem
{
public Driver Driver { get; set; }
public string Statuss { get; set; }
}
Мой взгляд
@model List<MyApp.web.Models.DriverViewItem>
и этот последний бит не работает. декларация модели.
Сначала создайте строго типизированный класс со свойствами, которые вам нужны. Я назвал свой DriverViewItem
.
Затем в вашем контроллере измените выбор, чтобы выбрать этот DriverViewItem
и проанализируйте список как модель для представления.
var Drivers = _db.Drivers.Where(x => x.DriverCompanyID == id).Where(d => d.CanWorkIn.Where(f => f.CompanyToDriveFor.CompanyID == OwnCompany.CompanyID).Any())
.Select(x => new DriverViewItem()
{
Driver = x,
Statuss = x.CanWorkIn.FirstOrDefault().Status
}).ToList();
return PartialView("_DriverList", Drivers);
В представлении вам нужно будет сказать, что вы ожидаете, что ваша модель вы сможете сделать это с помощью:
@model List<DriverViewItem>
Затем вы можете выполнить итерацию по таким элементам:
@foreach(DriverViewItem item in Model)
{
<div>
<p>@item.Driver.{what ever property}</p>
<p>@item.Statuss</p>
</div>
}
Это гораздо более чистый способ, чем анализ данных с помощью ViewBag.
public class DriverViewItem { public Driver Driver { get; set; } public string Status { get; set; } }
Было бы лучше использовать модель, чтобы передавать данные такого типа. Но чтобы ответить на вопрос напрямую, в контроллере назначьте его как массив элементов в сумку просмотра
ViewBag.Data = {
new { Driver = System.Data.Entity.Driver_Driver1, Status = NotConfirmed },
new { Driver = System.Data.Entity.Driver_Driver2, Status = NotConfirmed }
}
И в разметке:
@{
if (ViewBag.Data != null){
foreach (var item in ViewBag.Data) {
//show the item in the view
}
}
}