ASP.NET MVC - несколько моделей в форме и связыватели моделей - PullRequest
6 голосов
/ 18 января 2009

У меня есть форма, которая должна заполнить 2 модели. Обычно я использую атрибут ModelBinderAttribute для форм после действия, т. Е.

    [Authorize]
    [AcceptVerbs("POST")]
    public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
    {
       ///Do stuff
    }

В моей форме поля названы так же, как свойства моделей ...

Однако в этом случае у меня есть 2 разные модели, которые нужно заполнить.

Как мне это сделать? Есть идеи? Возможно ли это?

Ответы [ 3 ]

9 голосов
/ 28 января 2009

На самом деле ... лучший способ сделать это:

public ActionResult Add([GigBinderAttribute]Gig gig, [FileModelBinderAttribute]File file) {

}

Вы МОЖЕТЕ использовать несколько атрибутов!

8 голосов
/ 19 января 2009

В подобных случаях я склоняюсь к созданию одного типа модели, чтобы объединить различные модели:

class AddModel
{
     public Gig GigModel {get; set;}
     public OtherType OtherModel {get; set;}
}

... и связать , что.

0 голосов
/ 19 января 2009

Для этого можно использовать метод UpdateModel или TryUpdateModel. Вы можете пройти через модель, модель, которую хотите связать, префикс элементов, которые вы хотите связать с этой моделью, и форму. Например, если ваша модель Item имеет переменные формы «Item.Value», тогда ваш метод модели обновления будет выглядеть так:

UpdateMode(modelObject, stringPrefix, formCollection);

Если вы используете платформу сущностей, стоит отметить, что метод UpdateModel не всегда работает при некоторых условиях. Это работает особенно хорошо с POCO, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...