2010-05-25 7 views
1

J'ai une table contenant des informations dont j'ai besoin. Toutes ces lignes contiennent également une colonne avec un bouton radio de sorte que l'utilisateur est supposé être en mesure de vérifier l'une des lignes par défaut.Comment vérifier le bouton radio correct

Lorsque je ramène les données de la base de données et que je souhaite sélectionner celle qui est actuellement celle par défaut.

<% foreach (var item in (IEnumerable<Locale>) ViewData["Locales"]) { %> 
    <tr> 
     <td> 
      <%= Html.Encode(item.Language.Name) %> 
     </td> 
     <td> 
      <input type="radio" id="defaultLocale" name="defaultLocele" value="on" checked="<%= item.Default == false ? "false" : "true" %>" /> 
     </td> 

J'ai aussi essayé de le faire:

<input type="radio" id="defaultLocale" name="defaultLocele" value="on" checked="<%=item.Default == false ? "" : "checked" %>" /> 

mais rien ne semble faire la bonne chose. Je finis toujours par avoir vérifié la dernière rangée, ce qui n'est pas sûr.

+1

double possible de [comment les boutons radio fonctionnent avec une liaison asp.net mvc] (http://stackoverflow.com/questions/1586346/how-do-radio-buttons-work-with-asp-net -mvc-binding) –

+0

Merci @ Ólafur Waage, je n'ai pas trouvé celui-là lors de ma recherche. Je vais y jeter un coup d'oeil aussi. – MrW

Répondre

1

En html checked n'est pas une valeur booléenne true ou false. Vous devez définir checked = "checked" pour cocher la case (si vous voulez une syntaxe correcte). Mais la plupart des navigateurs acceptent tout checked = "..." comme réglage. Donc votre checked = "false" est interprété comme "Is checked". Donc toutes vos cases à cocher sont interprétées comme vérifiées et parce qu'une seule peut l'être, la dernière est vérifiée.

Si vous ne voulez pas que cela soit vérifié, vous devez supprimer tout l'attribut checked =.

<input type="radio" id="defaultLocale" name="defaultLocele" value="on" <%=item.Default ? "" : "checked=\"checked\"" %> /> 
+0

Oui. Et c'est ce que je fais sur le deuxième morceau de code là-bas. Ou est-ce que je fais cela aussi? J'ai vraiment pensé que ce serait un morceau de gâteau, mais je commence à devenir fou à ce sujet maintenant. – MrW

+0

Sa déclaration fait déjà cela. @MrW - essayez de placer des guillemets simples dans la valeur 'checked', comme ceci:' checked = "<% = item.Default == false? '': 'Checked'%>" ' –

+1

Aussi, puisque vous testez déjà par rapport à une valeur booléenne, il n'y a vraiment pas besoin de le comparer à 'false':' checked = "<% = item.Default? 'checked': ''%>" ' –