我有一个工作场景 - 我的视图模型包含一个 Employee 对象列表。
List<Employee> Employees;
我通过以下内容填充此列表:
Employees = EmployeeService.GetAll().ToList();
这工作正常。我可以查看员工、更新他们的数据、回发并保存到数据库。
但是,当我尝试在发送到视图之前对视图模型中的员工列表进行排序时,将上面的代码替换为:
Employees = EmployeeService.GetAll().OrderBy(e=>e.Name).ToList();
该视图很好地填充了有序的员工详细信息。不幸的是,当我将此视图模型发回控制器时,viewmodel.Employees 为空/空。
如果有人知道我在这里可能做错了什么,或者为什么只有在我排序时才会发生这种情况,我将不胜感激。
问候
编辑 -
public ActionResult Index()
{
EmployeesViewModel _viewModel = new EmployeesViewModel();
return View(_viewModel);
}
[HttpPost]
public ActionResult Index(EmployeesViewModel viewModel)
{
// HERE ** - viewModel.Employees is NULL
EmployeesService.UpdateAllEmployees(viewModel);
return View(viewModel);
}
编辑-示例标记-
for (int i = 0; i < Model.Employees.Count(); i++)
{
@Html.HiddenFor(e => e.Employees[i].Id)
@Html.HiddenFor(e => e.Employees[i].Name)
<table>
<tr>
<td style = "width: 125px">
@Model.Employees[i].Name
</td>
<td style = "width: 125px">
@Html.CheckBoxFor(e => e.Employees[i].IsActive)
</td>
</tr>
</table>
}
编辑 - 课程详情
public class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public string InitialCode { get; set; }
public bool IsActive { get; set; }
public Employee()
{
}
}
public class EmployeesViewModel
{
public List<Employee> Employees { get; set; }
private readonly EmployeesService EmployeesService;
public EmployeesViewModel()
{
Employees = new List<Employee>();
EmployeesService = new EmployeesService();
// Employees = EmployeesService.GetAll().ToList(); //THIS WORKS
Employees = EmployeesService.GetAll().OrderBy(e=>e.Name).ToList();
}
}
EmployeesService 只需调用 DB 上下文并返回所有记录。