asp.net mvc2 - как получить модель и model.something таким же образом в контроллере? - PullRequest
0 голосов
/ 30 июня 2010

Если мой Model равен Contacts, тогда я легко могу получить его в контроллере следующим образом:

[HttpPost]
public ActionResult Create(Contact contact)
...

Но если мой Model является оберткой для Contacts и чего-то еще, то в View я отображаю это с помощью Model.contact.

Как получить контакт в контроллере так же, как я это делал в первом случае? Я не хочу использовать Formcollection.

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

Если вы хотите связать только Контакт, но это не Модель вашего представления, а часть, как вы написали, вы можете сделать следующее для создания:

[HttpPost]
public ActionResult Create([Bind(Prefix = "Contact")]Contact contact)

И для редактирования вы можете сделать то же самое, и вам нужно также указать в UpdateModel префикс, например:

    [HttpPost]
    public ActionResult Edit([Bind(Prefix = "Contact")]Contact contact){
      UpdateModel(contact, "Contact");
    }
1 голос
/ 30 июня 2010

Например, у вас есть

public class MyViewModel
{
    Contact MyContact { get; set; }
    Object SomethingElse { get; set; }
}

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

[HttpPost]
public ActionResult Create(MyViewModel returnedModel)
{
    Contact returnedContact = returnedModel.MyContact;
    // ...
}
0 голосов
/ 30 июня 2010

Вы можете использовать связыватели моделей: уже есть некоторые ответы на стекопереработку об этом: ASP.NET MVC2 - Примеры привязок пользовательских моделей

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