1

使用 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 中的描述被返回给控制器,但 CustomList 被返回为空。我检查了乔·史蒂文斯的一些链接,但似乎我遗漏了一些东西。任何帮助,将不胜感激。

4

2 回答 2

1

代替:

@using(Html.BeginForm("DoStuff", "Create", Model))

尝试:

 @using(Html.BeginForm("DoStuff", "Create", FormMethod.Post))

希望这对你有用!

@Mystere Man我认为在构造函数中实例化列表不是问题。我从未听说过或经历过模型绑定的问题,尽管无论如何这始终是列表的好习惯。

于 2012-10-05T20:46:42.120 回答
0

您需要在两个模型的构造函数中实例化一个空列表。默认模型绑定器不会为您创建空列表。由于没有列表对象,它不会绑定值。

否则它看起来是正确的。

于 2012-10-05T14:28:15.663 回答