我正在开发一个代码第一个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 />
}
}
答案 0 :(得分:0)
如果有人来这里寻找答案,这对我有用:
@Html.TextBox("States[" + index + "].Cities[" + index2 + "].Name", Model.States[index].Cities.ElementAt(index2).Name)