2012-12-13 20 views
5

Ich habe Probleme mit dem HtmlHelper, RadioButtonFor und einem Enum in meinem Modell. Ich habe eine stark typisierte Ansicht und möchte, dass die Ankreuzfelder meine Enum-Eigenschaft umschalten.MVC3 RadioButtonFor mit enum

Enum.cs 

public enum Values{ 
    Value1, 
    Value2 
} 

Model.cs 

public class Model{ 
    public Values MyProp{ get; set; } 
; 

View.cshtml 

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1) 

Controller.cs 
public ActionResult WizardFirstStep() 
{ 
    var model = new Model(); 
    return View(model); 
} 

Wenn ich den MyProperty Wert in der Steuerung gesetzt, die RadioButton- wie erwartet geprüft. Aber nach einem Beitrag zum nächsten Assistentenschritt, der das Modell als Parameter erhält, ist die Eigenschaft nicht gesetzt.

Wenn es Ihnen hilft zu verstehen, was ich meine: Wenn es C# und WPF wäre, würde ich einen IValueConverter verwenden.

BTW: Ich verwende einen HtmlHelper.ActionLink, um das Modell zum Controller zu bekommen.

Vielen Dank im Voraus

Antwort

2

für etwaige Unannehmlichkeiten, Tut mir Leid. Nachdem ich hier gepostet habe, fand ich die Lösung sehr schnell. Mein ActionLink hat das @ Html.BeginForm-Formular nicht übermittelt. Also habe ich meine Radiobutton zu:

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1, new{ onClick = "this.form.submit();" }) 

, die den richtigen Wert an meine Steuerung übermittelt. Für den Moment ist das in Ordnung. Vielleicht kann der ActionLink die Formulardaten zurücksenden.

+0

Sie könnten diese Antwort als akzeptiert markieren – rossipedia

2

dies versuchen, sollte es funktionieren, wie ich das Gleiche getan haben, bevor:

@Html.RadioButtonFor(model => model.MyProp, (int)Values.Values1, model.MyProp == Values.Values1) 

Mitteilung über die Besetzung zu int sorgt er für den richtigen Wert für HTML verwendet wird.

BEARBEITEN: Entschuldigung, ich denke, Sie brauchen auch den dritten Parameter, um sicherzustellen, dass das richtige Optionsfeld beim Laden der Ansicht eingestellt ist.

Ich nahm auch MyPropi ein Tippfehler war und änderte es zu MyProp, stellen Sie sicher, diese an Ihrem Ende up passt richtig

+0

Ich habe Angst, aber das funktioniert nicht . Mein Problem ist: Wie bekomme ich den richtigen Wert, je nachdem welcher Radiobutton umgeschaltet wird? Momentan leite ich das Model über ActionLink in den Controller. @ Html.ActionLink ("nächste", "WizardSecondStep", Modell) – csteinmueller

+1

Ich sehe. Damit das nicht funktioniert, müssen Sie Ihr Formular in jedem Schritt posten, wenn Sie möchten, dass die Modellbindung funktioniert. Anstelle eines ActionLinks verwenden Sie also eine Senden-Schaltfläche, um das Formular zu posten. Das Modell als Parameter für Ihre Post-Methode verwenden – musefan

-1

Für Aspx Seiten: <%: Html.RadioButtonFor (m => m.YourProp, Ausgewählter Wert Ihrer ENUM wie: demo1.enum1.value2)