[英]MVC Model Binding failing when sorting viewmodel elements
我有一個工作場景-我的視圖模型包含Employee對象的列表。
List<Employee> Employees;
我通過以下方式填充此列表:
Employees = EmployeeService.GetAll().ToList();
這很好。 我可以查看員工,更新他們的數據,發回並保存到數據庫。
但是,當我嘗試通過將上面的代碼替換為:在發送到視圖之前,對視圖模型中的Employees列表進行排序時:
Employees = EmployeeService.GetAll().OrderBy(e=>e.Name).ToList();
該視圖很好地填充了訂購的員工詳細信息。 不幸的是,當我將此視圖模型發回給控制器時,viewmodel.Employees為null /空。
如果有人對我在這里可能做錯的事情有什么想法,或者為什么只有在我進行排序時才會發生這種情況,我將不勝感激。
問候
編輯 -
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只需調用數據庫上下文並返回所有記錄。
您的HTML表單元素需要以DefaultModelBinder可以正確解析出集合的方式呈現。 檢查一下: https : //github.com/danludwig/BeginCollectionItem 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.