2012-05-29 34 views
45

In vista parziale Io lavoro con caselle di testo come questa.MVC Razor Radio Button

@model Dictionary<string, string> 
@Html.TextBox("XYZ", @Model["XYZ"]) 

Come si genera radiobuttons, e ottenere il valore desiderato nella collezione forma SI/NO Vero/Falso)? Attualmente sto ottenendo null per "ABC" se seleziono qualsiasi valore per il seguito.

<label>@Html.RadioButton("ABC", @Model["ABC"])Yes</label> 
    <label>@Html.RadioButton("ABC", @Model["ABC"])No</label> 

controller

 public int Create(int Id, Dictionary<string, string> formValues) 
     { 
     //Something Something 
     } 
+0

Mostra il codice di metodo di azione pure. –

+2

possibile duplicato di [ASP.NET MVC Sì/No Pulsanti radio con modello MVC fortemente legato] (http://stackoverflow.com/questions/2559208/asp-net-mvc-yes-no-radio-buttons-with-strongly -bound-model-mvc) –

risposta

57

Per fare questo per gli oggetti multipli fare qualcosa di simile:

foreach (var item in Model) 
{ 
    @Html.RadioButtonFor(m => m.item, "Yes") @:Yes 
    @Html.RadioButtonFor(m => m.item, "No") @:No 
} 
+1

Io chiamo tutte le mie viste parziali passando @model Dictionary Ho bisogno di un modo per restituire (True, False) o (Sì, No) per i valori selezionati nei pulsanti di opzione. – Nanu

+1

@KirkWoll il suo codice non si legherà a un 'Dictionary ' (come afferma il suo modello). Sulla base di una risposta Sì No, un bool è probabilmente il migliore, un boolone Nullable se stai permettendo che nessuno venga selezionato. – mattytommo

+0

@KirkWoll Controlla la mia modifica aggiornata, inizialmente pensavo volesse un Sì No per un'opzione, raccomandando un bool. – mattytommo

13

ho risolvere lo stesso problema con this SO rispondere.

Fondamentalmente lega il pulsante di opzione a una proprietà booleana di un modello fortemente tipizzato.

@Html.RadioButton("blah", !Model.blah) Yes 
@Html.RadioButton("blah", Model.blah) No 

Spero che sia d'aiuto!

8
<label>@Html.RadioButton("ABC", "YES")Yes</label> 
<label>@Html.RadioButton("ABC", "NO")No</label> 
22

Semplicemente:

<label>@Html.RadioButton("ABC", True)Yes</label> 
    <label>@Html.RadioButton("ABC", False)No</label> 

ma si dovrebbe sempre utilizzare il modello fortemente tipizzato come suggerito da Cacho.

1

Questo funziona per me.

@{ var dic = new Dictionary<string, string>() { { "checked", "" } }; } 
@Html.RadioButtonFor(_ => _.BoolProperty, true, (@Model.BoolProperty)? dic: null) Yes 
@Html.RadioButtonFor(_ => _.BoolProperty, false, ([email protected])? dic: null) No 
11

Ho fatto questo in un modo simile:

@Html.RadioButtonFor(model => model.Gender, "M", false)@Html.Label("Male") 
    @Html.RadioButtonFor(model => model.Gender, "F", false)@Html.Label("Female") 
1
<p>@Html.RadioButtonFor(x => x.type, "Item1")Item1</p> 
<p>@Html.RadioButtonFor(x => x.type, "Item2")Item2</p> 
<p>@Html.RadioButtonFor(x => x.type, "Item3")Item3</p> 
1
<div class="col-md-10"> 
    Male: @Html.RadioButton("Gender", "Male") 
    Female: @Html.RadioButton("Gender", "Female") 
</div>       
+0

Spiega la tua soluzione per favore. –