如何在ASP.NET MVC中处理嵌套模型

时间:2010-06-28 09:07:53

标签: asp.net-mvc-2 model-binding

我一直在寻找一个关于如何正确处理嵌套属性的模型绑定的好工作解决方案。我有一个模型,其中包含其他子模型的列表,如下所示:

public class Organization : IEntity
{
    [ScaffoldColumn(false)]
    public int ID
    {
        get; 
        set;
    }

    [LocalizedDisplayName("Goals")]
    public virtual ICollection<OrganizationGoal> Goals
    {
        get;
        set;
    }
}

在控制器中,我尝试像这样更新数据:

[HttpPost]
public ActionResult Edit(string organizationIdentifier, FormCollection values)
{
    var organization = organizationService.GetByIdentifier(organizationIdentifier);

    if (TryUpdateModel(organization))
    {
       organizationService.Save(organization);
       return RedirectToAction("Edit");
    }

    return View("Edit");
}

但TryUpdateModel始终返回false,并且UI中不显示任何验证消息。 UI是使用标准MVC帮助程序EditorFor。

构建的

这样做的最佳做法是什么?对于一个非常正常的情况,没有那么容易找到信息。

谢谢!

1 个答案:

答案 0 :(得分:0)

现在是您使用GetByIdentifier查询的ID列吗?如果是这样,为什么要传入一个字符串,但在定义中将它作为一个int?

另外,通过阅读TryUpdateModel,听起来您可能想要使用UpdateModel。

http://msdn.microsoft.com/en-us/library/dd460189.aspx