我正在尝试实现一种方法,在其中选择属于正确StateId(NJ,DE,PA)的所有记录;我正在使用依赖注入和新的存储库设计模式。
这就是我的控制器中的内容:
private IWorkOrderRepository _workOrderRepository;
public DependencyInjectionController(IWorkOrderRepository workOrderRepository)
{
_workOrderRepository = workOrderRepository;
}
public IActionResult WorkOrders()
{
var model = _workOrderRepository.GetWorkOrders();
return View(model);
}
public IActionResult Nj(string LocationFilter)
{
var locations = _workOrderRepository.GetWorkOrders().Select(x => x.StateId == LocationFilter).ToList();
return View(locations);
}
GetWorkOrders
方法按预期的方式工作。
这是我的模特:
public class WorkOrderContext : DbContext
{
public DbSet<WorkOrder> WorkOrder { get; set; }
public WorkOrderContext(DbContextOptions<WorkOrderContext> options)
: base(options)
{
}
}
public class WorkOrder
{
[Key]
public int UserId { get; set; }
public string LocationId { get; set; }
public string Reason { get; set; }
public bool IsActive { get; set; } = true;
public DateTime Date { get; set; } = DateTime.Now;
public string StateId { get; set; }
}
我碰到路线时遇到的错误是:
“传递给ViewDataDictionary的模型项的类型为'System.Collections.Generic.List
1[System.Boolean]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable
1 [WorkOrderServices.Models.WorkOrder]'。”
答案 0 :(得分:4)
Select
正在将工作单列表转换为布尔值:true
其中StateId
与位置过滤器匹配,而false
没有。
您要使用Where
:Where(x => x.StateId == LocationFilter)
过滤而不是转换列表。