l'ajout d'attribut “name” de CheckBoxFor
Je suis en train d'ajouter un attribut "name" de mon CheckBoxFor
et ne peut pas le faire fonctionner.
@Html.CheckBoxFor(
model => model.ProvidePracticalSuggestions,
new { @name = "help_practicalSuggestions"
})
Une idée de ce que je fais de mal ici?
Rendu HTML:
<div>
<input data-val="true" data-val-required="The Provide practical suggestions for implementing change, e.g. step-by-step best practices field is required." id="ProvidePracticalSuggestions" name="ProvidePracticalSuggestions" type="checkbox" value="true" /><input name="ProvidePracticalSuggestions" type="hidden" value="false" />
<span class="field-validation-valid" data-valmsg-for="ProvidePracticalSuggestions" data-valmsg-replace="true"></span>
<label for="ProvidePracticalSuggestions">Provide practical suggestions for implementing change, e.g. step-by-step best practices</label>
</div>
est-il afficher quoi que ce soit? lancer une erreur?
Non, ne pas voir une erreur. C'est juste de ne pas changer le nom de la case à cocher. Je vous jure que j'ai fait avant...
avez-vous essayez de l'utiliser avec le symbole @ sur le nom
Pour référence, que le symbole (@) est généralement utilisé seulement pour la "classe" de la propriété — c'est un caractère d'échappement afin qu'il puisse utiliser le mot réservé (de classe) comme un nom de propriété. La plupart des autres communes attributs HTML n'entrent pas en conflit, ils n'ont pas besoin, le caractère d'échappement.
si vous êtes après le nom de l'attribut et que vous souhaitez la N de l'attribut à la capitale. - Il Correct?
Non, ne pas voir une erreur. C'est juste de ne pas changer le nom de la case à cocher. Je vous jure que j'ai fait avant...
avez-vous essayez de l'utiliser avec le symbole @ sur le nom
Pour référence, que le symbole (@) est généralement utilisé seulement pour la "classe" de la propriété — c'est un caractère d'échappement afin qu'il puisse utiliser le mot réservé (de classe) comme un nom de propriété. La plupart des autres communes attributs HTML n'entrent pas en conflit, ils n'ont pas besoin, le caractère d'échappement.
si vous êtes après le nom de l'attribut et que vous souhaitez la N de l'attribut à la capitale. - Il Correct?
OriginalL'auteur user547794 | 2012-07-24
Vous devez vous connecter pour publier un commentaire.
MODIFIER sur 09/07/2016
Cela ne fonctionnera pas
Mais Cela fonctionnera
L'astuce est d'utiliser des majuscules lettre
"N"
dans"Name"
Je ne pense pas que ce soit Possible. Vous ne pouvez pas changer le
name
attribut pour une case à cocher lors de l'utilisation de la méthode d'assistance HTML. Par curiosité, j'ai regardé dans le MVC code source et de trouver quelque chose d'intéressant à l'intérieurInputHelper
méthode qui est appelée à partir de laCheckBoxHelper
méthode qui est appelée à partir de laCheckBoxFor
méthodeC'est l'appel de la MergeAttribute méthode pour "
type
", "name
" et "value
". Et ce code est uniquement pour le Case élémentEDIT : le Regarda dans les MergeAttribute méthode et c'est la façon dont il est
C'est donc l'appel de
MergeAttribute
de laTagBuilder
classe et il semble que ceEt la le premier
If
condition renvoie true et l'intérieurif
ne reviendra pas vrai parce que ( je suppose)name
est présent dans leAttributes
collection. Donc, il suffit d'exécuter lareturn
déclaration.Solution : au Lieu d'utiliser
Html.CheckBoxFor
méthode d'assistance, vous pouvez utiliser leHtml.CheckBox
méthode.Votre code deviendra donc
Le premier paramètre est le nom que vous voulez pour l'élément d'entrée.
Aussi, comme l'explique l'un des autre réponse , Si vous utilisez
new { @Name="MyCustomName"}
et Il va générer la case de l'élément avec le nom que vous êtes de passage. Mais il ne sera pas générer le champ caché avec ce nom. votre champ caché auront toujours le même nom que votre modèle de nom de propriété.CheckboxFor
méthode d'assistance généralement générer le champ caché pour stocker les sélectionner/désélectionner la valeur de la case à cocher dans ce champ caché. Il est donc important que vous devriez avoir à la fois du champ(case à cocher et il est associé champ caché) nom même.Donc, la meilleure solution est d'utiliser
Html.CheckBox
méthode d'assistance. Cela va générer le bon nom pour le champ caché.C'est toujours valide .NET de 4,6 et il semble sémantiquement stupide que "n" et "N" pour faire toute la différence.
Juste essayé et ça a fonctionné pour moi. Mais je ne vais pas utilisée, car elle semble être interdit dans la spec HTML5. et pourrait causer des problèmes dans le furutre. Voir ce DONC, la question: stackoverflow.com/questions/26341507/...
OriginalL'auteur Shyju
Peux pas le faire. Le point de l'ensemble de
CheckBoxFor
est de générer automatiquement desname
. Si vous souhaitez avoir votre propre nom, utilisezOriginalL'auteur Serg Rogovtsev
En fait, tout ce que vous avez à faire est d'utiliser "@Name" (avec un N majuscule) comme indiqué ci-dessous, et tout devrait fonctionner très bien! 🙂
Cheers!
Je dois le faire assez régulièrement lors de l'utilisation de complexes modèles de vue de sorte que le nom ne se termine pas par être terriblement énorme chaîne de caractères de soulignement et les mots, et n'ont jamais eu un problème avec un double nom de l'attribut en cours de création...très étrange! Je vais devoir chercher dans cette plus de!
Vous épargnant de vie. Comme Tim dit le nom généré par CheckBoxFor est parfois incorrect.
OriginalL'auteur tklives
Vous n'avez pas besoin de le symbole @ dans le nom de
Merci de me montrer le rendu html de la vue source
Ok sortie a été ajouté
s'il vous plaît essayer ce pour moi à la place de "@nom" essayez d'utiliser id="help_practicalSuggestions"
Modification de l'Id a bien fonctionné. Tellement bizarre, pourquoi je ne peux pas changer de nom?
OriginalL'auteur HatSoft
Essayer sans le @:
OriginalL'auteur Shane Fulmer
Il suffit de créer une variable temp et le passer dans l'expression lambda.
Mise à jour
Serg Rogovtsev est effectivement droit. '...Pour la "version" de la fonction d'assistance fournit le nom de l'attribut automatiquement pour vous.
OriginalL'auteur jschell12
Dans CheckBoxFor helper nous lier le contrôle à la propriété à l'aide de l'expression. Le nom de la propriété est utilisée pour définir le nom de l'attribut de contrôle.
Quand je lier le modèle de la propriété avec la case à cocher, il attribue le nom de l'attribut de contrôle avec le nom de la propriété elle-même comme indiqué ci-dessous :
Rendu HTML:
Vous pouvez propbably utiliser la Case de l'aide pour donner le nom de l'attribut ou vous pouvez créer votre propre méthode d'aide où vous pouvez assigner des attributs comme vous le souhaitez.
Pour plus d'informations, visitez :
http://20fingers2brains.blogspot.in/2013/02/html-checkboxfor-helper-in-mvc3-razor.html
OriginalL'auteur Karan
D'abord ajouter un filtre pour votre modèle, appelé
DisplayAttribute
Et vous pouvez utiliser l'Étiquette pour le modèle
OriginalL'auteur Rahul