web-dev-qa-db-fra.com

Activez ou désactivez une case à cocher en fonction de la valeur?

Comment pouvons-nous cocher ou décocher une case à cocher par programme en fonction de la valeur? Autrement dit, pour un utilisateur particulier si la valeur est true, la case à cocher doit être cochée, sinon, si la valeur est false, la case à cocher doit être décochée. J'ai déclaré la case de la manière suivante:

<input type="checkbox" class="checkbox">
14
always v
if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = "checked" })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}

J'espère que cela t'aides :)

21
Yasser

Si vous ne souhaitez pas utiliser @ Html.CheckBoxFor pour quelque raison que ce soit et que vous souhaitez vous y tenir 

         <input type="checkbox"> 

alors voici ce que j’ai trouvé être le meilleur moyen de le faire:

 <input @(Convert.ToBoolean(Model.YourPropertyHere) == true ?   "checked='checked'" : string.Empty)  type="checkbox" />

Le code fourni par @Yasser ci-dessus:

    checked="@(required ? "checked" : "")"

N'a pas fonctionné pour moi car il continuait à ajouter l'attribut vérifié à l'élément, et le paramètre "vérifié" = "" rendra toujours la case à cocher cochée, ce qui n'était pas la sortie souhaitée. Si vous intégrez l'instruction entière dans un bloc ainsi: 

     @(Convert.ToBoolean(Model.YourPropertyHere) == true ?   "checked='checked'" : string.Empty)

vous obtiendrez les résultats souhaités.

23
ranah

Il existe un moyen plus simple d’inclure ou non l’attribut checked si vous écrivez notre propre <input> au lieu d’utiliser des alternatives telles que Html.CheckBoxFor:

<input type="checkbox" checked="@isChecked">

Razor est assez intelligent pour générer automatiquement soit

<input type="checkbox" checked="checked">

ou

<input type="checkbox">

selon que isChecked est true ou false. Pas besoin de déclarations if ou de code en double.

13
DavGarcia

Si vous utilisez MVC et transmettez correctement les valeurs de modèle de votre contrôleur, 

@Html.CheckBoxFor(model => model.checkBox1)

... est tout ce dont vous avez besoin. Html-helper utilise la logique pour déterminer s'il faut ou non insérer le code checked="checkbox".

Sinon, sans l'aide de HTML, vous pouvez générer dynamiquement l'attribut (d'autres l'ont expliqué), mais ne commettez pas l'erreur de penser que checked = "" laissera la case décochée. Voir cette réponse pour une explication.

2
Faust

essaye ça:

<input type="radio" name="filter_favorites" value="Favorites" @(loggedIn ? "checked" : "") />

Il s’agit donc d’un simple bouton radio qui vérifie logsIn variable & si le bouton radio vrai est coché sinon.

0
Raj

Si vous souhaitez cocher/décocher la valeur de la case à cocher dans code-behind, vous devez inclure un identifiant et des attributs de serveur d'exécution dans votre balise de case à cocher.

<checkbox Id="chk" runat="server" class="chkbox"/>

code-behind:

if(yourcondition==true)
  chk.checked = true;
else
  chk.checked = false;

Si vous voulez le faire en javascript

<checkbox Id="chk" class="chkbox"/>

JS:

if(yourcondition==true)
  chk.checked = true;
else
  chk.checked = false;
0
Umesh
if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = true })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}
0
Prince