使用MVC我有一个FormModel:
public class FormModel
{
public string Description { get; set; }
public List<CustomList> CustomList { get; set; }
public FormModel(){}
}
FormModel类由CustomList:
类的列表组成public class CustomList
{
public int CustomListId { get; set; }
public string Description { get; set; }
public List<String> StringList{ get; set; }
public CustomerList(){}
}
包含字符串列表。我想要实现的是设置一个允许用户编辑StringList中的每个值的表单。为此,我设置了我的观点:
@model CMS.Models.FormModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using(Html.BeginForm("DoStuff", "Create", Model))
{
<div>
<p>Description: @(Html.EditorFor(e => e.Description))</p>
@for (int i = 0; i < Model.CustomList.Count; i++)
{
@Html.LabelFor(l => l.CustomList[i].Description)
@Html.HiddenFor(h => h.CustomList[i].CustomListId)
for (int a = 0; a < Model.CustomList[i].StringList.Count; a++)
{
@Html.EditorFor(e => e.CustomList[i].StringList[a])
}
}
<input type="submit" />
<div>
}
在提交时,FormModel中的Description返回给控制器,但CustomList返回Empty。我检查过Joe Stevens的一些链接,但似乎我错过了一些东西。任何帮助将不胜感激。
答案 0 :(得分:1)
而不是:
@using(Html.BeginForm("DoStuff", "Create", Model))
尝试:
@using(Html.BeginForm("DoStuff", "Create", FormMethod.Post))
希望这适合你!
@Mystere Man我不认为在构造函数中实例化列表是个问题。我从来没有听说过或经历过模型绑定的问题,尽管无论如何这仍然是列表的好习惯。
答案 1 :(得分:0)
您需要在两个模型的构造函数中实例化一个空列表。默认模型绑定器不会为您创建空列表。由于没有列表对象,因此不会绑定值。
否则看起来不错。