ASP.net MVC - Обновление модели на сложных моделях - PullRequest
2 голосов
/ 25 мая 2010

Я изо всех сил пытаюсь получить содержимое формы, которая является сложной моделью, а затем обновить модель этой сложной моделью.

В моей модели аккаунта много людей

[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 со сложной моделью?

Надеюсь, я достаточно ясно

Большое спасибо:)

UPDATE

Вот что я искал: http://goneale.com/2009/07/27/updating-multiple-child-objects-and-or-collections-in-asp-net-mvc-views/

1 Ответ

0 голосов
/ 25 мая 2010

Этот сценарий не поддерживается, если у вас нет типа учетной записи, реализующего IValueProvider.

Это был бы довольно странный MVC. Связыватель модели должен понимать HTTP-запрос и переводить его в вашу модель, чтобы не связывать ваши сущности с другими сущностями.

После дальнейшего осмотра, я думаю, вы ищете: http://msdn.microsoft.com/en-us/library/dd487246.aspx

Попробуйте это:

 try{
    db.Accounts.ApplyCurrentValues(record); 
    db.SubmitChanges();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...