2009-08-14 1 views
6

Ho una serie di punti di vista, ciascuno sono digitato di avere la propria classe ViewModel che contiene tutto ciò che serve per visualizzare se stessi, ad esempio:MVVM e ModelBinders in ASP.NET MVC Framework

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

il metodo post azione per questo mi piacerebbe usare sarebbe simile a questa:

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

si noti che l'unico oggetto che mi interessa è la proprietà delle risorse del CreateResourceViewModel, non il CreateResourceViewModel stesso. Tutto il resto è solo per l'utente, quello che stanno aggiornando è la classe di risorse ...

È possibile all'interno di MVC Framework (anche se è V2 CTP)?

Grazie a tutti

risposta

14

Sicuro. Usa:

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

Ciao, che non ha funzionato - risorsa è nullo su di presentare ... – Kieron

+2

Allora o il modulo pubblicato non contiene le informazioni necessarie per il legante modello predefinito per materializzare una risorsa, o le chiavi di forma non corrispondono al modello di presentazione che hai mostrato prima. Guarda il modulo pubblicato in Firebug o Fiddler. Se non riesci a capire il problema, pubblica qui sia la dichiarazione del tipo di risorsa che quella del tipo di risorsa. –

+3

Ah ah! Stavo inserendo manualmente i dati in html (Html.TextBox ("Name", Model.Resource.Name)), l'ho cambiato in Html.TextBox ("Resource.Name") e tutto andava bene. Grazie Craig! – Kieron