2012-05-29 16 views
45

In Teilansicht Ich arbeite mit Textfeldern wie diesem.MVC Razor Radio Button

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

Wie kann ich Radiobuttons erzeugen, und den gewünschten Wert in Form Sammlung als JA/NEIN True/False erhalten)? Zur Zeit bekomme ich null für "ABC", wenn ich irgendeinen Wert für das Folgende wähle.

<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

zeigen auch Ihre Aktion-Methode Code. –

+2

mögliches Duplikat von [ASP.NET MVC Ja/Nein-Optionsfelder mit stark gebundenem Modell MVC] (http://stackoverflow.com/questions/2559208/asp-net-mvc-yes-no-radio-buttons-with-strongly -bound-model-mvc) –

Antwort

57

Um dies für mehrere Elemente zu tun, so etwas wie:

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

Ich rufe alle meine partiellen Ansichten @model Dictionary Ich brauche einen Weg, um (True, False) oder (Yes, No) für ausgewählte Werte in Radiobuttons zurückzukehren. – Nanu

+1

@KirkWoll sein Code würde nicht an ein 'Dictionary ' (wie sein Modell angibt) binden. Basierend auf einer Ja Nein Antwort ist ein Bool wahrscheinlich das Beste, ein Nullable bool, wenn Sie zulassen, dass keine ausgewählt wird. – mattytommo

+0

@KirkWoll Überprüfen Sie meine aktualisierte Bearbeitung, ich dachte ursprünglich, er wollte nur eine Ja Nein für eine Option, so dass eine Bool empfohlen. – mattytommo

13

löse ich das gleiche Problem mit this beantworten SO.

Im Grunde bindet es den Radiobutton an eine boolesche Eigenschaft eines stark typisierten Modells.

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

Hoffe es hilft!

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

einfach:

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

Aber Sie sollten immer stark typisierte Modell verwenden, wie von cacho vorgeschlagen.

1

Das funktioniert für mich.

@{ 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

ich dies in einer Weise geschehen, wie:

@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

Erklären Sie bitte Ihre Lösung. –