2009-08-14 1 views
6

У меня есть ряд видов, каждый набираются иметь свой собственный класс ViewModel, который содержит все, что нужно, чтобы проявить себя, например:MVVM и ModelBinders в ASP.NET MVC Framework

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

метод после действия для этого я хотел бы использовать буду выглядеть следующим образом:

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

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

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

Все

ответ

14

Несомненно. Использование:

public ActionResult Create([Bind(Prefix="Resource")]Resource resource) 
+0

Привет, это не работает - ресурс является недействительным по представить ... – Kieron

+2

Тогда либо Опубликованная форма не содержит информацию, необходимую для модели по умолчанию вяжущего в материализовать ресурс, или ключи формы не соответствуют модели презентации, которую вы показывали ранее. Посмотрите на опубликованную форму в Firebug или Fiddler. Если вы не можете понять проблему, опубликуйте здесь и объявление типа ресурса. –

+3

Ах, ха! Я вручную помещал данные в html (Html.TextBox («Имя», Model.Resource.Name)), я изменил его на Html.TextBox («Resource.Name»), и все было хорошо. Черт возьми, Крейг! – Kieron