2009-04-20 7 views
0

Ich habe eine Reihe von dynamisch erstellten Feldern in den Ansichten. Lassen Sie uns sagenVerwendung von MVC Html.RadioButton in Ansichten

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

In meinem Controller möchte ich sehen, was die Benutzerwerte für jeden ausgewählt hat, aber ich finde, dass die Formcollection nur mit „Car Payment“ ich zurück, „Haus Zahlung“ und „CC Zahlung ". Ich erhalte nicht die tatsächlichen Werte, die mit diesen Auswahlmöglichkeiten für Radiobuttons verknüpft sind, es sei denn, ich definiere diese Eingänge explizit als Controller-Variable. Leider werden diese Optionsfelder dynamisch generiert, einschließlich ihrer Namen, so dass dies keine Option ist. Irgendwelche Ideen im Umgang mit diesem Problem?

Antwort

1

Ich denke, Sie sollten wirklich den ValueProvider auf dem Controller verwenden, anstatt auf die Parameter in der Anfrage selbst verweisen. Durch die Verwendung des Value Providers wird der Komponententest wesentlich vereinfacht, da Sie die Anforderung nicht nachahmen müssen. Stellen Sie dem Controller lediglich eine ValueProvider-Implementierung bereit.

... 
    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)); 
     ... 
    } 

Offensichtlich müssen Sie die Fehlerüberprüfung hinzufügen, etc. Sie auch über die Tasten auf dem Valueprovider laufen können, gerade wie Sie auf Request.Form.

0

Ok Ich habe herausgefunden, wie man das im Controller macht, dachte ich würde teilen.

Anfrage ["CarPayment"] kann in meinem Beispiel Werte aus der RadioButton-Sammlung dynamisch extrahieren.