Czy ktoś wie, jak powiązać przycisk opcji tak / nie z właściwością logiczną modelu z silną typizacją w ASP.NET MVC.
Model
public class MyClass
{
public bool Blah { get; set; }
}
Widok
<%@ Page Title="blah" Inherits="MyClass"%>
<dd>
<%= Html.RadioButton("blah", Model.blah) %> Yes
<%= Html.RadioButton("blah", Model.blah) %> No
</dd>
Dzięki
ROZWIĄZANIE:
Dziękuję Brianowi za wskazówki, ale było to przeciwieństwo tego, co napisał. Jak tak -
<%@ 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
źródło
źródło
Odpowiedzi:
Drugi parametr jest wybrany, więc użyj! aby wybrać wartość no, gdy wartość logiczna ma wartość false.
źródło
Jeśli używasz MVC 3 i Razor, możesz również użyć następujących elementów:
źródło
Oto bardziej kompletny przykład, w którym zastosowano a
fieldset
ze względu na dostępność i określono pierwszy przycisk jako domyślny. Bez afieldset
, do czego służą przyciski radiowe jako całość, nie można określić programowo.Model
Widok
Możesz dodać
@checked
argument do obiektu anonimowego, aby ustawić przycisk opcji jako domyślny:Zwróć uwagę, że możesz powiązać się z łańcuchem, zastępując
true
ifalse
używając wartości ciągu.źródło
Opierając się nieco na odpowiedzi Bena, dodałem atrybuty do identyfikatora, aby móc używać etykiet.
Mam nadzieję, że to pomoże.
źródło
Dodanie tagów etykiet wokół przycisków opcji przy użyciu zwykłego kodu HTML rozwiązuje również problem z „labelfor”:
Kliknięcie tekstu powoduje teraz wybranie odpowiedniego przycisku opcji.
źródło
lub MVC 2.0:
źródło
Jeśli uda mi się wrzucić kapelusz do ringu, myślę, że istnieje prostszy sposób na ponowne wykorzystanie funkcji przycisku radiowego niż dotychczasowe odpowiedzi.
Załóżmy, że masz następującą właściwość w swoim ViewModel :
Możesz udostępnić tę właściwość za pomocą szablonu edytora wielokrotnego użytku :
Najpierw utwórz plik
Views/Shared/EditorTemplates/YesNoRadio.vbhtml
Następnie dodaj następujący kod do YesNoRadio.vbhtml :
Możesz wywołać edytor właściwości, ręcznie określając nazwę szablonu w widoku :
Plusy:
źródło
Skończyło się na tym, że zapakowałem to w metodę rozszerzenia, więc (1) mogłem wygenerować etykietę i radio naraz oraz (2), więc nie musiałem zawracać sobie głowy określaniem własnych identyfikatorów:
Stosowanie:
źródło