2009-08-14 4 views
6

J'ai une série de vues, chaque tapées d'avoir leur propre classe ViewModel qui contient tout ce dont ils ont besoin pour s'afficher, par exemple:MVVM et ModelBinders dans le framework ASP.NET MVC

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

la méthode d'action post pour cela, je voudrais utiliser ressemblerait à ceci:

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

Notez que le seul objet que je suis intéressé est la propriété des ressources du CreateResourceViewModel, pas le CreateResourceViewModel lui-même. Tout le reste est juste pour l'utilisateur, ce qu'ils mettent à jour est la classe de ressources ...

Est-ce possible dans le MVC Framework (même s'il s'agit de v2 CTP)? Merci à tous

Répondre

14

Utilisation:

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

Salut, cela ne fonctionne pas - ressource est nulle sur soumettre ... – Kieron

+2

Ensuite, soit votre forme affichée ne contient pas les informations requises pour le modèle de liaison par défaut pour matérialiser une ressource ou vos clés de formulaire ne correspond pas au modèle de présentation que vous avez montré auparavant. Regardez le formulaire posté dans Firebug ou Fiddler. Si vous ne parvenez pas à résoudre le problème, publiez-le à la fois et la déclaration de type de ressource ici. –

+3

Ah ah! Je mettais manuellement les données dans le HTML (Html.TextBox ("Nom", Model.Resource.Name)), je l'ai changé en Html.TextBox ("Resource.Name") et tout était bon. MERCI Craig! – Kieron