Pourquoi ont-ils été modifiés par défaut lors de l'ajout d'une nouvelle vue "édition"? Quels sont les avantages de l'utilisation de EditorFor()
vs. TextboxFor()
?
j'ai trouvé ça
Par défaut, les échafaudages Créer et Modifier utilisent désormais l'assistant Html.EditorFor au lieu de l'assistant Html.TextBoxFor. Cela améliore la prise en charge des métadonnées sur le modèle sous la forme d'attributs d'annotation de données lorsque la boîte de dialogue Ajouter une vue génère une vue.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
la source
la source
Réponses:
L'avantage de
EditorFor
est que votre code n'est pas lié à un fichier<input type="text"
. Donc, si vous décidez de changer quelque chose à l'aspect de la façon dont vos zones de texte sont rendues, comme les envelopper dans un,div
vous pouvez simplement écrire un modèle d'éditeur personnalisé (~/Views/Shared/EditorTemplates/string.cshtml
) et toutes vos zones de texte dans votre application bénéficieront automatiquement de ce changement alors que si vous avez codé en durHtml.TextBoxFor
vous devra le modifier partout. Vous pouvez également utiliser les annotations de données pour contrôler la façon dont cela est rendu.la source
TextBoxFor : Il sera rendu comme un élément HTML d'entrée de texte correspondant à l'expression spécifiée. En un mot simple, il sera toujours rendu comme une zone de texte d'entrée quel que soit le type de données de la propriété qui se lie avec le contrôle.
EditorFor : Ce contrôle est un peu intelligent. Il rend le balisage HTML basé sur le type de données de la propriété. Par exemple, supposons qu'il existe une propriété booléenne dans le modèle. Pour rendre cette propriété dans la vue sous forme de case à cocher, nous pouvons utiliser CheckBoxFor ou EditorFor. Les deux généreront le même balisage.
Quel est l'avantage d'utiliser EditorFor?
Comme nous le savons, en fonction du type de données de la propriété, il génère le balisage html. Supposons donc demain si nous changeons le type de données de propriété dans le modèle, pas besoin de changer quoi que ce soit dans la vue. Le contrôle EditorFor changera automatiquement le balisage html.
la source
Le
Html.TextboxFor
crée toujours une zone de texte (<input type="text" ...
).Pendant que EditorFor examine le type et les méta-informations, il peut rendre un autre contrôle ou un modèle que vous fournissez.
Par exemple, pour les propriétés DateTime, vous pouvez créer un modèle qui utilise jQuery DatePicker.
la source
implement jquery datepicker
et l' utiliser avecEditorFor
est iciC'est l'une des différences fondamentales non mentionnées dans les commentaires précédents: la
Readonly
propriété fonctionnera avec la zone de texte pour et elle ne fonctionnera pas avecEditorFor
.Le code ci-dessus fonctionne, où, comme pour le suivi, vous ne pouvez pas faire de contrôle en lecture seule .
la source
Il existe également une légère différence dans la sortie html pour un type de données chaîne.
la source