Weiß jemand, wie man ein Ja / Nein-Optionsfeld an eine boolesche Eigenschaft eines stark typisierten Modells in ASP.NET MVC bindet?
Modell
public class MyClass
{
public bool Blah { get; set; }
}
Aussicht
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
Vielen Dank
LÖSUNG:
Vielen Dank für Brian für die Regie, aber es war das Gegenteil von dem, was er geschrieben hat. Wie so -
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", !Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
c#
asp.net-mvc
model
radio-button
boolean
Brianstewey
quelle
quelle
Antworten:
Der zweite Parameter ist ausgewählt, verwenden Sie also das! um den Wert no auszuwählen, wenn der Boolesche Wert falsch ist.
quelle
Wenn Sie MVC 3 und Razor verwenden, können Sie auch Folgendes verwenden:
quelle
Hier ist ein vollständigeres Beispiel, bei dem
fieldset
aus Gründen der Barrierefreiheit a verwendet wird und die erste Schaltfläche als Standard angegeben wird. Ohne afieldset
kann nicht programmgesteuert bestimmt werden, wofür die Optionsfelder insgesamt bestimmt sind.Modell
Aussicht
Sie können
@checked
dem anonymen Objekt ein Argument hinzufügen , um das Optionsfeld als Standard festzulegen:Beachten Sie, dass Sie an eine Zeichenfolge binden können, indem Sie
true
undfalse
durch die Zeichenfolgenwerte ersetzen .quelle
Aufbauend auf Bens Antwort fügte ich Attribute für die ID hinzu, damit ich Beschriftungen verwenden konnte.
Ich hoffe das hilft.
quelle
Durch Hinzufügen von Beschriftungs-Tags um die Optionsfelder mithilfe von normalem HTML wird auch das Problem "Beschriftung für" behoben:
Durch Klicken auf den Text wird nun das entsprechende Optionsfeld ausgewählt.
quelle
oder MVC 2.0:
quelle
Wenn ich meinen Hut in den Ring werfen kann, gibt es meiner Meinung nach einen saubereren Weg als die vorhandenen Antworten, um die Optionsfeldfunktion wiederzuverwenden.
Angenommen, Sie haben die folgende Eigenschaft in Ihrem ViewModel :
Sie können diese Eigenschaft über eine wiederverwendbare Editorvorlage verfügbar machen :
Erstellen Sie zunächst die Datei
Views/Shared/EditorTemplates/YesNoRadio.vbhtml
Fügen Sie dann den folgenden Code zu YesNoRadio.vbhtml hinzu :
Sie können den Editor für die Eigenschaft aufrufen, indem Sie den Vorlagennamen in Ihrer Ansicht manuell angeben :
Vorteile:
quelle
Am Ende habe ich dies in eine Erweiterungsmethode verpackt, damit (1) ich das Etikett und das Radio gleichzeitig generieren konnte und (2) ich mich nicht mit der Angabe meiner eigenen IDs herumschlagen musste:
Verwendung:
quelle