2010-09-10 18 views
7

D'accord, cela doit être quelque chose de stupide-comme-une-boîte-de-roches que je fais mal, mais je ne peux pas le trouver.MVC Simple modèle de liaison ne fonctionne pas

action MVC:

[AcceptVerbs(HttpVerbs.Post)] 
public virtual ActionResult Create(BatchCreateViewModel createModel) 
{ 
    return RedirectToRoute(MVC.Home.Display()); 
} 

BatchCreateViewModel:

public class BatchCreateViewModel 
{ 
    bool searchAVM; 
    bool searchBPO; 
    bool searchAppraisal; 
    int transactionAge; 
    string Description; 
    string uploadfile; 
} 

Il y a des contrôles sur la page de vue nommée "searchAVM", "searchBPO", "searchAppraisal", (cases à cocher) "transactionAge" (un ensemble de boutons radio avec des valeurs entières) et "description" (une zone de texte)

Lorsque je casse à l'entrée de "Create", createModel est là, mais a toutes les valeurs par défaut (null pour le chaînes, false pour les booléens, 0 pour les int). Si j'examine Request.Form, les valeurs sont là, mais elles n'entrent tout simplement pas dans le modèle.

Qu'est-ce que je fais mal?

(Ceci est sous MVC 2, cadre 4.)

+0

Vous devez également afficher le code d'affichage comme il pourrait y avoir un problème là-bas (à savoir la valeur inherits). – Mayo

Répondre

19

Votre modèle de vue devrait avoir des propriétés automatiques, non variables publiques. Ça m'a attrapé avant!

il devrait donc être:

public class BatchCreateViewModel 
{ 
    public bool searchAVM {get;set;} 
    public bool searchBPO {get;set;} 
    public bool searchAppraisal {get;set;} 
    public int transactionAge {get;set;} 
    public string Description {get;set;} 
    public string uploadfile {get;set;} 
} 
+3

D * mn! Je vous ai dit que c'était une boîte de roches stupide! Merci, Paul. –

+0

Haha, content que je ne sois pas le seul - je ne dirai pas combien de temps je me suis battu pour ça à l'époque. –

+1

C'est là que je veux appuyer sur la flèche Haut comme 10x. J'ai manqué aussi ce détail facile. – atconway