Warum wurden diese standardmäßig geändert, wenn eine neue Ansicht "Bearbeiten" hinzugefügt wurde? Was sind Vorteile bei der Verwendung von EditorFor()
vs. TextboxFor()
?
ich habe das gefunden
Standardmäßig verwenden die Gerüste zum Erstellen und Bearbeiten jetzt den Html.EditorFor-Helfer anstelle des Html.TextBoxFor-Helfers. Dies verbessert die Unterstützung für Metadaten im Modell in Form von Datenanmerkungsattributen, wenn das Dialogfeld Ansicht hinzufügen eine Ansicht generiert.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
quelle
quelle
Antworten:
Der Vorteil von
EditorFor
ist, dass Ihr Code nicht an ein gebunden ist<input type="text"
. Wenn Sie sich also dazu entschließen, etwas an dem Aspekt zu ändern, wie Ihre Textfelder wie das Umschließen in eine Textbox gerendert werden, könnendiv
Sie einfach eine benutzerdefinierte Editorvorlage (~/Views/Shared/EditorTemplates/string.cshtml
) schreiben, und alle Ihre Textfelder in Ihrer Anwendung profitieren automatisch von dieser Änderung, während Sie sie fest codiertHtml.TextBoxFor
haben muss es überall ändern. Sie können auch Datenanmerkungen verwenden, um die Darstellung zu steuern.quelle
TextBoxFor : Es wird wie ein HTML-Element für die Texteingabe gerendert , das dem angegebenen Ausdruck entspricht. Mit einfachen Worten, es wird immer wie ein Eingabetextfeld gerendert, unabhängig vom Datentyp der Eigenschaft, die mit dem Steuerelement verbunden wird.
EditorFor : Dieses Steuerelement ist etwas intelligent. Es rendert HTML-Markups basierend auf dem Datentyp der Eigenschaft. Angenommen, das Modell enthält eine boolesche Eigenschaft. Um diese Eigenschaft in der Ansicht als Kontrollkästchen zu rendern, können Sie entweder CheckBoxFor oder EditorFor verwenden. Beide generieren das gleiche Markup.
Was ist der Vorteil von EditorFor?
Wie wir wissen, wird abhängig vom Datentyp der Eigenschaft das HTML-Markup generiert. Nehmen wir also an, dass morgen, wenn wir den Datentyp der Eigenschaft im Modell ändern, nichts in der Ansicht geändert werden muss. Das EditorFor-Steuerelement ändert das HTML-Markup automatisch.
quelle
Das
Html.TextboxFor
erstellt immer ein Textfeld (<input type="text" ...
).Während der EditorFor den Typ und die Metainformationen betrachtet und ein anderes Steuerelement oder eine von Ihnen bereitgestellte Vorlage rendern kann.
Beispielsweise können Sie für DateTime-Eigenschaften eine Vorlage erstellen, die den jQuery DatePicker verwendet.
quelle
implement jquery datepicker
und mitEditorFor
- hier istDies ist einer der grundlegenden Unterschiede, die in früheren Kommentaren nicht erwähnt wurden:
Readonly
Eigenschaft funktioniert mit Textfeld für und es funktioniert nicht mitEditorFor
.Der obige Code funktioniert, wenn Sie wie beim Folgen nicht die Kontrolle schreibgeschützt machen können .
quelle
Es gibt auch einen kleinen Unterschied in der HTML-Ausgabe für einen String-Datentyp.
quelle