MVVM и ModelBinders в ASP.NET MVC Framework

У меня есть ряд представлений, каждое из которых имеет свой собственный класс ViewModel, который содержит все, что им нужно для отображения, например:

public class CreateResourceViewModel
{
     public Project Parent { get; set; }
     public SelectList Categories { get; set; }
     public Resource Resource { get; set; }
}

Метод post action для этого, который я хотел бы использовать, будет выглядеть так:

[AcceptVerbs (HttpVerbs.Post)]
public ActionResult Create (Resource resource)
{
   // Update code...
}

Обратите внимание, что единственный интересующий меня объект — это свойство Resource модели CreateResourceViewModel, а не сама CreateResourceViewModel. Все остальное просто подливка для пользователя, они обновляют класс ресурсов...

Возможно ли это в рамках MVC Framework (даже если это v2 CTP)?

Спасибо всем


person Kieron    schedule 14.08.2009    source источник


Ответы (1)


Конечно. Использовать:

 public ActionResult Create([Bind(Prefix="Resource")]Resource resource)
person Craig Stuntz    schedule 14.08.2009
comment
Тогда либо ваша опубликованная форма не содержит информации, необходимой для связывания модели по умолчанию для материализации ресурса, либо ваши ключи формы не соответствуют модели представления, которую вы показали ранее. Посмотрите на опубликованную форму в Firebug или Fiddler. Если вы не можете понять проблему, опубликуйте здесь и это, и объявление типа ресурса. - person Craig Stuntz; 14.08.2009
comment
Ах ха! Я вручную помещал данные в html (Html.TextBox (Name, Model.Resource.Name)), я изменил его на Html.TextBox (Resource.Name), и все было хорошо. Спасибо Крейг! - person Kieron; 14.08.2009