В вашем коде есть несколько проблем:
- В
GetWorkOrdersByLocation
вы определили List<WorkOrder> workOrders
и попытаетесь присвоить ему List<string>
, поскольку LocationId
имеет тип string. - В
GetWorkOrdersByLocation
у вас есть только пустой список workOrders, поэтому любой выбранный элемент также будет пустым. WorkOrders
, похоже, похож на GetWorkOrdersByLocation
, но создает представление без предоставлениялюбые данные, потому что, хотя вы звоните GetWorkOrdersByLocation
, вы ничего не делаете с тем, что он возвращает. - Незначительный (?) один, наименование
GetWorkOrdersByLocation
на самом деле не соответствует тому, что вы хотитекогда вы возвращаете местоположения рабочих заданий, а не рабочие задания (сортированные / сгруппированные?) по местоположению.
В общем, вам нужен метод, который предоставляет ваши данные.GetWorkOrders
, кажется, делает это, но вы возвращаете представление вместо данных.Этот метод должен возвращать только ваш список, который затем используется WorkOrders
и GetWorkOrdersByLocation
.
public IActionResult WorkOrders()
{
// get the work order list and return a view on it
return View(GetWorkOrders());
}
private List<WorkOrder> GetWorkOrders()
{
List<WorkOrder> workOrders = new List<WorkOrder> ();
workOrders.Add(new WorkOrder { UserId = 1, LocationId =
"Philadelphia", Date = DateTime.Now, Reason = "Lights", IsActive =
true });
workOrders.Add(new WorkOrder { UserId = 2, LocationId = "Camden",
Date = DateTime.MinValue, Reason = "Plumbing", IsActive = true });
workOrders.Add(new WorkOrder { UserId = 3, LocationId =
"Burlington", Date = DateTime.Now, Reason = "Water", IsActive =
false });
workOrders.Add(new WorkOrder { UserId = 4, LocationId =
"Wilmington", Date = DateTime.MaxValue, Reason = "Lights", IsActive
= true });
// return the work orders to be used by your view methods
return workOrders;
}
public IActionResult GetWorkOrdersByLocation()
{
// get your work order list and extract all locations
var locations = GetWorkOrders().Select(x => x.LocationId).ToList();
// return view on all locations
return View(locations);
}
Если вы хотите, чтобы ваш последний метод возвращал представление по всем рабочим заданиям, отсортированным по местоположению, сделайте:
public IActionResult GetWorkOrdersByLocation()
{
// get your work order list and sort by location
var sortedByLocation = GetWorkOrders().OrderBy(x => x.LocationId).ToList();
// return view on all sorted work orders
return View(sortedByLocation);
}