2009-04-20 2 views
0

J'ai un certain nombre de champs créés dynamiquement sur les vues. Disons queUtilisation de MVT Html.RadioButton dans les vues

Car Payment [1] [2] [3] 
House Payment [1] [2] [3] 
CC Payment [1] [2] [3] 

Dans mon contrôleur je veux voir quelles sont les valeurs que l'utilisateur a sélectionné pour chacun d'eux, mais je trouve que l'utilisation du FormCollection je ne reçois que de retour, « Paiement de voiture » « Maison de paiement », et « CC paiement ". Je ne récupère pas les valeurs réelles associées à ces sélections de radiobutton à moins que je ne définisse explicitement ces entrées comme une variable de contrôleur. Malheureusement, ces boutons radio sont générés dynamiquement, y compris leurs noms, ce n'est donc pas une option. Des idées en termes de gestion de ce problème?

Répondre

1

Je pense que vous devriez vraiment utiliser le ValueProvider sur le contrôleur plutôt que de référencer les paramètres dans la demande elle-même. L'utilisation du fournisseur de valeur rendra beaucoup plus facile le test unitaire puisque vous n'aurez pas à faire une simulation de la requête, fournissez simplement une implémentation de ValueProvider au contrôleur.

... 
    var provider = new FormCollection(); 
    provider["CarPayment"] = "1"; 

    var controller = new PaymentController(); 
    controller.ValueProvider = provider.ToValueProvider(); 

    var result = controller.Create(); 
    ... 


    public ActionResult Create() 
    { 
     int carPaymentType = (int)this.ValueProvider["CarPayment"].ConvertTo(typeof(int)); 
     ... 
    } 

De toute évidence, vous devrez ajouter une vérification d'erreur, etc. Vous pouvez également parcourir les touches du ValueProvider comme vous le feriez sur Request.Form.

0

Ok, j'ai compris comment faire cela dans le contrôleur, je pensais partager.

Demande ["CarPayment"] sera capable d'extraire de façon dynamique des valeurs de la collection RadioButton dans mon exemple.

Questions connexes