当绑定到对象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; }
}
答案 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。