我正在MVC3中编写一个调查应用程序。 我有这个课(简化):
public class Survey
{
public Respondent Respondent { get; set; }
}
在我的观点中:
@model Survey
// bla bla bla
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.Partial("_Respondent", Model.Respondent)
}
当我发回它时,调查结果.Respondent = null :(
[HttpPost]
public ActionResult Survey(Survey survey)
{
return RedirectToAction("Index");
}
_Respondednt局部视图的简化代码:
@model Mercer.FITT.Respondent
<fieldset>
<legend>Respondent Information</legend>
<table>
<tr>
<td>
@Html.LabelFor(model => model.Name)
</td>
<td>
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.JobTitle)
</td>
<td>
@Html.EditorFor(model => model.JobTitle)
@Html.ValidationMessageFor(model => model.JobTitle)
</td>
</tr>
</table>
</fieldset>
如果我摆脱局部视图并将局部视图内容复制到主视图中,一切都很好。知道为什么不从局部视图中收集数据吗? 也许我应该以不同的方式调用部分视图?
非常感谢。
答案 0 :(得分:6)
使用EditorTemplate而不是部分视图
@model Survey
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.EditorFor(m=>m.Respondent)
}
并且不要忘记在Respondent.cshtml
文件夹中创建EditorTemplates
文件,并在其中输入要编辑的回复字段。