ASP.NET MVC:模型绑定复杂类型

时间:2011-06-22 13:31:35

标签: asp.net-mvc-3

当绑定到对象List工作时,我遇到了绑定到对象的问题。 使用Mvc3.1和工具更新。

当绑定到类Form时,HttpPost函数会收到正确的模型。 当绑定到FormViewModel时,HttpPost函数会收到一个空模型。

绑定包含其他模型的模型时是否有任何限制?

public class FormViewModel
{
    public Form Form { get; set; }
}

public class Form
{
    public List<Section> Sections { get; set; }
}

public class Section
{
    public List<Question> Questions { get; set; }
}

public class Question
{
    public int Id { get; set; }
    public string Description { get; set; }
}

1 个答案:

答案 0 :(得分:2)

输入元素的name属性是binder用作上下文的内容。我的猜测是你的观点包含这样的东西:

@model Form
@Html.EditorFor(m => m.Sections)

你的帖子方法如下:

[HttpPost]
public ActionResult Function(FormViewModel formViewModel)
{
    // ...
}

如果您将视图更改为:

@model FormViewModel
@Html.EditorFor(m => m.Form.Sections)

你的获取动作返回FormViewModel的一个实例,它可能会正常工作。助手将使用lambda表达式的主体来创建input元素的名称。在这种情况下,它将创建类似Form.Sections[0].Field的内容。然后,模型绑定器能够获取Form.Sections []并正确初始化FormViewModel。