2009-08-14 21 views
6

Mam szereg poglądów, każdy są wpisane mieć własną klasę ViewModel, który zawiera wszystko, czego potrzeba, aby wyświetlić siebie, na przykład:MVVM i ModelBinders w ASP.NET MVC

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

Sposób działania po za tym chciałbym używać będzie wyglądać następująco:

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

Zauważ, że jedynym celem Jestem zainteresowany jest własnością zasobu CreateResourceViewModel, a nie sam CreateResourceViewModel. Wszystko inne jest po prostu dla użytkownika, co aktualizuje jest klasa zasobów ...

Czy jest to możliwe w ramach MVC Framework (nawet jeśli jest to v2 CTP)?

Podziękowania dla wszystkich

Odpowiedz

14

Pewnie. Zastosowanie:

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

Cześć, że nie działa - zasób jest zerowy na przedstawienia ... – Kieron

+2

wówczas swoją pisał formularz nie zawiera informacje wymagane dla spoiwa domyślnego modelu materializować zasobu lub klucze formularza nie pasuje do prezentowanego wcześniej modelu prezentacji. Spójrz na opublikowany formularz w Firebug lub Fiddler. Jeśli nie możesz wymyślić problemu, opublikuj to i deklarację typu zasobu tutaj. –

+3

Ah ha! Ręczne umieszczanie danych w html (Html.TextBox ("Name", Model.Resource.Name)), zmieniłem go na Html.TextBox ("Resource.Name") i wszystko było w porządku. Dziękuję Craig! – Kieron