我在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>
}
任何帮助都会很明显。
答案 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>
}
希望这有帮助