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

本文关键字:属性 字段 编辑器 null 设置 布数据 视图 数据 | 更新日期: 2023-09-27 18:35:16

我在"视图"页面中传递模型列表,并且仅编辑模型的"答案"属性。但在回发后,除 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>    
}

任何帮助都将是可观的。

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

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

如果需要将视图中的其他模型数据发布到控制器,可以使用Html.HiddenFor(model => model.SomeProperty) 。请参阅 Html.HiddenFor 是做什么的? 进行解释。

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>
}

希望这有帮助