从视图发布数据时,除了具有编辑器字段的属性外,所有属性都设置为null

时间:2016-02-19 07:02:38

标签: c# asp.net asp.net-mvc-4

我在View页面中传递了一个模型列表,只编辑了模型的Answer属性。但是在回发之后,除了Answer属性之外,所有属性都设置为null。

以下是查看代码。

@model List<NewsLetter.Models.NewsLetterQuestions>           
@using (Html.BeginForm())
{
  @Html.AntiForgeryToken()

  for (var i = 0; i < Model.Count(); i++)
    {        
      <div>
        @Html.DisplayFor(m => m[i].Question)
      </div>

      <div>
         @Html.EditorFor(m => m[i].Answer)
      </div>   
}
      <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
          <input type="submit" value="Submit" class="btn btn-default" />
        </div>
      </div>    
}

任何帮助都会很明显。

2 个答案:

答案 0 :(得分:2)

这就是模型绑定应该如何工作的方式。它将创建NewsLetterQuestions个对象,并将表单发送的属性设置为控制器操作。有关示例的说明,请参阅Introduction to ASP.NET MVC Model Binding

如果您需要将视图中的其他模型数据发布到控制器,可以使用Html.HiddenFor(model => model.SomeProperty)。有关说明,请参阅What does Html.HiddenFor do?

答案 1 :(得分:1)

DisplayFor()不会返回任何内容。您可以使用以下代码。

@model List<NewsLetter.Models.NewsLetterQuestions>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    for (var i = 0; i < Model.Count(); i++)
    {
        <div>
            @Html.TextBoxFor(m => m[i].Question, new {@readonly = "readonly"})
        </div>

        <div>
            @Html.EditorFor(m => m[i].Answer)
        </div>

    }
       <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Submit" class="btn btn-default" />
            </div>
        </div>

}

希望这有帮助