130 votes

Touches radio Oui / Non ASP.NET MVC avec modèle MVC fortement lié

Quelqu'un sait-il comment lier un bouton radio Oui / Non à une propriété booléenne d'un modèle fortement typé dans ASP.NET MVC?

Modèle

 public class MyClass
{
     public bool Blah { get; set; }
}
 

Vue

 <%@  Page Title="blah"  Inherits="MyClass"%>
    <dd>
        <%= Html.RadioButton("blah", Model.blah) %> Yes
        <%= Html.RadioButton("blah", Model.blah) %> No
    </dd>
 

Merci

SOLUTION:

Merci à Brian pour la direction mais c'était le contraire de ce qu'il a écrit. Comme si -

 <%@  Page Title="blah"  Inherits="MyClass"%>
<dd>
    <%= Html.RadioButton("blah", !Model.blah) %> Yes
    <%= Html.RadioButton("blah", Model.blah) %> No
</dd>
 

196voto

Ben Cull Points 3588

Si vous utilisez MVC 3 et Razor, vous pouvez également utiliser les éléments suivants:

 @Html.RadioButtonFor(model => model.blah, true) Yes
@Html.RadioButtonFor(model => model.blah, false) No
 

74voto

Brian Mains Points 31772

Le deuxième paramètre est sélectionné, utilisez donc le caractère! pour sélectionner la valeur non lorsque le booléen est faux.

 <%= Html.RadioButton("blah", !Model.blah) %> Yes 
<%= Html.RadioButton("blah", Model.blah) %> No 
 

55voto

Daniel Imms Points 16273

Voici un exemple plus complet à l'aide d'un fieldset pour des raisons d'accessibilité et de en précisant le premier bouton par défaut. Sans un fieldset, ce que les boutons radio sont d'ensemble ne peut pas être déterminé par programme.

Modèle

public class MyModel
{
    public bool IsMarried { get; set; }
}

Vue

<fieldset>
    <legend>Married</legend>

    @Html.RadioButtonFor(e => e.IsMarried, true, new { id = "married-true" })
    @Html.Label("married-true", "Yes")

    @Html.RadioButtonFor(e => e.IsMarried, false, new { id = "married-false" })
    @Html.Label("married-false", "No")
</fieldset>

Vous pouvez ajouter un @checked argument de la anonyme de l'objet pour définir le bouton radio par défaut:

new { id = "married-true", @checked = 'checked' }

Notez que vous pouvez lier à une chaîne en remplaçant true et false avec les valeurs de chaîne.

26voto

ctc Points 391

S'appuyant légèrement sur la réponse de Ben, j'ai ajouté des attributs pour l'ID afin de pouvoir utiliser des étiquettes.

 <%: Html.Label("isBlahYes", "Yes")%><%= Html.RadioButtonFor(model => model.blah, true, new { @id = "isBlahYes" })%>
<%: Html.Label("isBlahNo", "No")%><%= Html.RadioButtonFor(model => model.blah, false, new { @id = "isBlahNo" })%>
 

J'espère que ça aide.

23voto

Jeff Bobish Points 301

L'ajout de balises d'étiquette autour des boutons radio à l'aide de HTML normal résoudra également le problème de "labelfor":

 <label><%= Html.RadioButton("blah", !Model.blah) %> Yes</label>
<label><%= Html.RadioButton("blah", Model.blah) %> No</label>
 

Cliquez sur le texte pour sélectionner le bouton radio approprié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X