簡體   English   中英

對視圖模型元素進行排序時,MVC模型綁定失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM