2

我正在 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) 
}

当我将其发回时,survey.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>

如果我摆脱部分视图并将部分视图内容复制到主视图中,一切都很好。知道为什么不从局部视图中收集数据吗?也许我应该以不同的方式调用局部视图?

非常感谢。

4

1 回答 1

6

使用 EditorTemplate 而不是局部视图

@model Survey  

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    @Html.EditorFor(m=>m.Respondent) 
}

并且不要忘记在文件夹中创建Respondent.cshtml文件EditorTemplates并将其放入 Respondent 字段以进行编辑。

于 2012-12-04T18:30:00.700 回答