2012-12-13 7 views
5

Ho problemi con HtmlHelper, RadioButtonFor e un enum nel mio modello. Ho una vista fortemente tipizzata, e voglio che le caselle di controllo attivino la mia proprietà enum.MVC3 RadioButtonFor con 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); 
} 

Se fisso il valore MyProperty nel controllore, il RadioButton viene controllato come previsto. Ma dopo un post al prossimo passo della procedura guidata, che ottiene il modello come parametro, la proprietà non viene impostata.

Se ti aiuterà a capire cosa intendo: Se fosse C# e WPF userei un IValueConverter.

btw: utilizzo HtmlHelper.ActionLink per ottenere il modello sul controller.

Grazie in anticipo

risposta

2

Ci scusiamo per eventuali disagi. Dopo aver pubblicato qui, ho trovato la soluzione molto rapidamente. Il mio ActionLink non ha inviato il modulo @ Html.BeginForm. Così ho cambiato il mio radiobutton a:

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

che invia il valore corretto al mio controller. Per il momento va bene. Forse ActionLink può postare i dati del modulo.

+0

Potresti considerare di contrassegnare questa risposta come accettata – rossipedia

2

provare questo, dovrebbe funzionare come ho fatto la stessa cosa prima:

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

Avviso il cast per int, assicura il valore corretto viene utilizzato per l'HTML.

EDIT: Spiacente, penso che sia necessario anche il terzo parametro per garantire che il pulsante di opzione corretto sia impostato quando si carica la vista.

Ho anche assunto MyPropi è stato un errore di battitura e lo cambiò in MyProp, assicurarsi questo corrisponde correttamente alla vostra fine

+0

ho paura, ma che non funziona . Il mio problema è: come ottenere il valore corretto, a seconda di quale pulsante radio è attivato, nel mio modello. Al momento sto indirizzando il modello tramite ActionLink nel controller. @ Html.ActionLink ("next", "WizardSecondStep", Model) – csteinmueller

+1

Vedo. In modo che non funzioni, è necessario pubblicare il modulo ogni passaggio se si desidera che il collegamento del modello funzioni. Quindi, invece di un ActionLink, utilizzare un pulsante di invio per pubblicare il modulo. Avere il modello come parametro del tuo metodo post – musefan

-1

Per le pagine aspx: <%: Html.RadioButtonFor (m => m.YourProp, il valore selezionato della vostra enum come: demo1.enum1.value2)