Asp.Net MVC 5对于子ICollection属性的模型绑定在HTTPPost上为null

时间:2016-10-05 10:27:11

标签: asp.net-mvc asp.net-mvc-4 razor model-view-controller asp.net-mvc-5

我正在开发一个代码第一个MVC 5应用程序。我的数据模型具有虚拟 ICollection 属性,可实现一对多关系。问题出在表单提交中,ICollection类型的实体列表在控制器中被接收为null。

以下是供您参考的示例代码:

public class State
{
    public int Id { get; set; }
    public string Name{ get; set; }
    public ICollection<City> Cities{ get; set; }
}
public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
}

这是我的ViewModel:

public class StateViewModel
{
    *<other properties>*
    public List<State> States{ get; set; }
}

假设要求是显示国家名单及其下面的城市名单。城市名称应显示在文本框中,以便用户可以内联编辑它们。我面临的问题是 - 在StateViewModel.States下提交Cities时收到null。

以下是我的观点:

  @for (int index = 0; index < Model.States.Count(); index++)
    {
        Html.HiddenFor(model => Model.States[index].Id);
        for (int index2 = 0; index2 < Model.States[index].Cities.Count(); index2++)
        {
            @Html.EditorFor(model => Model.States[index].Cities.ElementAt(index2).Name)
            Html.HiddenFor(model => Model.States[index].Cities.ElementAt(index2).Id);
            <br />
        }
    }

1 个答案:

答案 0 :(得分:0)

如果有人来这里寻找答案,这对我有用:

@Html.TextBox("States[" + index + "].Cities[" + index2 + "].Name", Model.States[index].Cities.ElementAt(index2).Name)
相关问题