我有这个viewmodel:
public class PostRequirements
{
public List<Question> _questions { get; set; }
public List<string> _documents { get; set; }
}
以下是我的主要观点:
@using (Html.BeginForm("SavePostReq", "Post",
FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
if (Model._questions != null)
{
@Html.Partial("~/Views/Shared/_appQuestions.cshtml", Model._questions)
}
if (Model._documents != null)
{
@Html.Partial("~/Views/Shared/_appDocuments.cshtml", Model._documents)
}
<input type="submit" class="btn btn-success" value="Submit" />
}
以下是我的_appQuestions.cshtml
观点:
@model IEnumerable<Core.Model.Question>
<input type="hidden" name="ApplId" value="1" />
<h3>Questions</h3>
<table>
@foreach (var item in Model)
{
<tr>
<td style="vertical-align: top;">
@Html.DisplayFor(modelItem => item.Title)
</td>
<td style="width: 70%;">
<textarea id="@item.Id" name="@item.Id" style="width: 300px;height: 70px;"></textarea>
</td>
</tr>
}
</table>
这是后期行动:
public ActionResult SavePostReq(PostRequirements preq)
{
return RedirectToAction("Result", new { id = 2 });
}
我的模型preq不为null,但_questions
和_documents
在帖子中显示为空。
答案 0 :(得分:0)
直接将Model对象(而不是Model._questions)传递给两个局部视图,并在for循环中使用Model._questions [i] .Title,如this post上的答案所示
答案 1 :(得分:0)
您的行动期待PostRequirements
,但您要通过Question
或Documents
。我认为viewModel在你想要显示数据时更好,但是在retreiving时你必须自定义绑定器。浏览此页面Custom Model Binder
我希望它会对你有所帮助。