46 votes

Comment définir une case à cocher dans la vue rasoir ?

J'ai besoin de cocher une case par défaut :

J'ai essayé tout cela, mais rien ne vérifie ma case à cocher -

@Html.CheckBoxFor(m => m.AllowRating, new { @value = "true" })

@Html.CheckBoxFor(m => m.AllowRating, new { @checked = "true" })

@Html.CheckBoxFor(m => m.AllowRating, new { @checked = true })

@Html.CheckBoxFor(m => m.AllowRating, new { @checked = "checked"})

0 votes

0 votes

Pourquoi ne pas définir au préalable la valeur par défaut à partir du contrôleur ou de la base de données ?

42voto

SLaks Points 391154

Vous devez définir le AllowRating à la propriété true de préférence dans le contrôleur ou le modèle.
Comme les autres entrées, l'état de la case à cocher reflète la valeur de la propriété.

19voto

Carlos Toledo Points 955

Cela fonctionne pour moi :

<input id="AllowRating" type="checkbox" @(Model.AllowRating?"checked='checked'":"")    style="" onchange="" />

Si vous voulez vraiment utiliser les aides HTML :

@Html.CheckBoxFor(m => m.AllowRating, new { @checked = Model.AllowRating})

Tenez également compte du fait que si m.AllowRating est faux, il ne sera pas possible de définir le statut vérifié dans vos exemples.

4 votes

Le premier exemple est incorrect. Chaque fois que l'attribut checked est présent, même s'il est défini à false ou à une chaîne vide, il sera vrai.

3 votes

@Ben, cela permettrait d'éviter ce problème : <input type="checkbox" @(Model.AllowRating ? "checked='checked'" : "") />

17voto

Mark S. Points 3627

La syntaxe de votre dernière ligne est correcte.

 @Html.CheckBoxFor(x => x.Test, new { @checked = "checked" })

Ça devrait marcher. C'est la syntaxe correcte. Si vous avez un modèle existant et que AllowRating est défini sur true, MVC ajoutera automatiquement l'attribut checked. Si AllowRating est défini sur false, MVC n'ajoutera pas l'attribut, mais si vous le souhaitez, vous pouvez utiliser la syntaxe ci-dessus.

0 votes

D'une manière ou d'une autre, la case à cocher n'est pas présélectionnée. Voici ce que j'ai dans le modèle : public bool AllowComments { get ; set ; }

0 votes

L'utilisation de la nouvelle syntaxe { @checked = "checked } se comporte de manière un peu étrange lorsque votre page présente des erreurs de validation : Lorsque vous décochez la case dans le navigateur, que vous soumettez le formulaire et que le même formulaire est à nouveau présenté (avec les messages d'erreur de validation visibles), la case à cocher sera rendue cochée, n'est-ce pas ?

7voto

Atul Points 61

Vous pouvez le faire avec @Html.CheckBoxFor() :

@Html.CheckBoxFor(m => m.AllowRating, new{@checked=true });

ou vous pouvez également le faire avec un simple @Html.CheckBox() :

@Html.CheckBox("AllowRating", true) ;

2 votes

Cela semble être la même chose que la troisième tentative de l'affiche originale ; êtes-vous sûr que cette réponse apporte vraiment quelque chose ?

5voto

BrainCoder Points 666

Vous définissez la propriété AllowRating à true depuis votre contrôleur ou modèle

      @Html.CheckBoxFor(m => m.AllowRating, new { @checked =Model.AllowRating })

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