Les ID doivent être uniques
...dans l'arbre des éléments DOM de la page, de sorte que chaque contrôle est accessible individuellement par son id
du côté client (dans la page du navigateur) en
- JavaScript scripts chargés dans la page
- Styles CSS définis sur la page
Si votre page comporte des identifiants non uniques, elle sera quand même rendue, mais elle ne sera certainement pas valide. Les navigateurs sont assez indulgents lorsqu'ils analysent du HTML non valide, mais ne le faites pas juste parce que il semble que cela fonctionne.
Les noms sont souvent uniques mais peuvent être partagés.
...à l'intérieur du DOM de la page entre plusieurs contrôles du même type (pensez aux boutons radio) de sorte que lorsque les données obtiennent Posté à au serveur, seule une valeur particulière est envoyée. Ainsi, lorsque vous avez plusieurs boutons radio sur votre page, seule la valeur de celui qui est sélectionné est envoyée au serveur. value
est renvoyée au serveur même s'il y a plusieurs contrôles de boutons radio liés avec la même name
.
Addendum à l'envoi de données au serveur : Lorsque les données sont envoyées au serveur (généralement au moyen d'une requête HTTP POST), toutes les données sont envoyées en tant que paires nom-valeur donde nom est le name
du contrôle HTML d'entrée et valeur est son value
tel que saisi/sélectionné par l'utilisateur. Ceci est toujours vrai pour les requêtes non-Ajax. Dans les requêtes Ajax, les paires nom-valeur puede être indépendant des contrôles de saisie HTML sur la page, car les développeurs peuvent envoyer ce qu'ils veulent au serveur. Très souvent, les valeurs sont également lues à partir des contrôles d'entrée, mais j'essaie juste de dire que ce n'est pas nécessairement le cas.
Quand les noms peuvent être dupliqués
Il peut parfois être avantageux que les noms soient partagés entre les contrôles de tout type de saisie de formulaire. Mais quand ? Vous n'avez pas précisé quelle était la plate-forme de votre serveur, mais si vous utilisiez quelque chose comme ASP.NET MVC vous bénéficiez de la validation automatique des données (client et serveur) et vous pouvez également lier les données envoyées à des types forts. Cela signifie que ces noms doivent correspondre aux noms des propriétés de type.
Supposons maintenant que vous ayez ce scénario :
- vous avez une vue avec une liste d'éléments du même type
- l'utilisateur travaille généralement avec un seul élément à la fois, il ne saisira donc les données que pour un seul élément et les enverra au serveur.
Ainsi, le modèle de votre vue (puisqu'elle affiche une liste) est de type IEnumerable<SomeType>
mais votre serveur n'accepte qu'un seul élément de type SomeType
.
Que diriez-vous d'un partage des noms alors ?
Chaque article est emballé dans son propre FORM
et les éléments d'entrée qu'il contient ont les mêmes noms, de sorte que lorsque les données arrivent sur le serveur (à partir de n'importe quel élément), elles sont correctement liées au type de chaîne attendu par l'action du contrôleur.
Ce scénario particulier peut être vu sur mon Histoires créatives mini-site. Vous ne comprendrez pas la langue, mais vous pouvez vérifier ces formulaires multiples et ces noms partagés. Peu importe que ID
sont également dupliqués (ce qui est une violation des règles) mais cela pourrait être résolu. Cela n'a pas d'importance dans ce cas.
164 votes
@user qui a voté pour fermer cette question comme non constructive :
ID
yName
L'utilisation et le comportement sont très bien spécifiés et documentés, les réponses ne peuvent donc être que constructives. Pourquoi ce vote serré alors ? Il en va de même pour les électeurs de -1 ? Qu'est-ce qui ne va pas dans cette question ?