ASP.net MVC - 复杂模型的更新模型

时间:2010-05-25 14:28:49

标签: c# asp.net-mvc models

我正在努力获取一个复杂模型的表单内容,然后使用该复杂模型更新模型。

我的帐户模型有很多人

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult OpenAnAccount(string area,[Bind(Exclude = "Id")]Account account, [Bind(Prefix="Account.Individuals")] EntitySet<Individual> individuals){

    var db = new DB();
    account.individuals = invdividuals;
    db.Accounts.InsertOnSubmit(account);
    db.SubmitChanges();
}

因此,它可以很好地添加新记录,但不能更新它们,如:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult OpenAnAccount(string area,[Bind(Exclude = "Id")]Account account, [Bind(Prefix="Account.Individuals")] EntitySet<Individual> individuals){

    var db = new DB();
    var record = db.Accounts.Single(a => a.Reference == area); 
    account.individuals = invdividuals;

    try{
        UpdateModel(record, account); // I can't convert account ToValueProvider()
        db.SubmitChanges();
    }
    catch{
        return ... //Error Message
    }
}

我的问题是如何将UpdateModel与帐户模型一起使用,因为它不是FormCollection。 我怎么转换它?如何将ToValueProvider与复杂模型一起使用?

我希望我足够清楚

非常感谢:)

更新

这就是我要找的东西: http://goneale.com/2009/07/27/updating-multiple-child-objects-and-or-collections-in-asp-net-mvc-views/

1 个答案:

答案 0 :(得分:0)

除非您的帐户类型为IValueProvider,否则不支持此方案。

然而,这将是一些非常奇怪的MVC。模型绑定器应该理解HTTP请求并将其转换为您的模型,而不是将您的实体绑定到其他实体。

经过进一步检查,我认为您正在寻找: http://msdn.microsoft.com/en-us/library/dd487246.aspx

试试这个:

 try{
    db.Accounts.ApplyCurrentValues(record); 
    db.SubmitChanges();
 }