Was ist der Unterschied zwischen DisplayName
Attribut und Display
Attribut in ASP.NET MVC?
c#
asp.net-mvc
data-annotations
displayattribute
.net-attributes
Ghooti Farangi
quelle
quelle
DisplayName
Legt dieDisplayName
im Modell enthaltenen Metadaten fest. Beispielsweise:und wenn Sie aus Ihrer Sicht Folgendes verwenden:
es würde erzeugen:
Display
macht das gleiche, aber Sie können auch andere Metadateneigenschaften wie Name, Beschreibung, ... festlegen.Brad Wilson hat einen schönen Blog-Beitrag über diese Attribute.
quelle
Ich denke, die aktuellen Antworten vernachlässigen es, die tatsächlich wichtigen und signifikanten Unterschiede hervorzuheben und was dies für die beabsichtigte Verwendung bedeutet. Während beide in bestimmten Situationen funktionieren können, weil der Implementierer Unterstützung für beide integriert hat, haben sie unterschiedliche Verwendungsszenarien. Beide können Eigenschaften und Methoden mit Anmerkungen versehen, aber hier sind einige wichtige Unterschiede:
DisplayAttribute
System.ComponentModel.DataAnnotations
Namespace in derSystem.ComponentModel.DataAnnotations.dll
Assembly definiertDescription
oder festlegenShortName
DisplayNameAttribute
System.ComponentModel
Namespace inSystem.dll
Die Assembly und der Namespace sprechen für die beabsichtigte Verwendung, und die Lokalisierungsunterstützung ist der große Kicker.
DisplayNameAttribute
gibt es seit .NET 2 und scheint eher für die Benennung von Entwicklerkomponenten und -eigenschaften im Legacy-Eigenschaftenraster gedacht zu sein, nicht so sehr für Dinge, die für Endbenutzer sichtbar sind, die möglicherweise eine Lokalisierung und dergleichen benötigen.DisplayAttribute
wurde später in .NET 4 eingeführt und scheint speziell für die Kennzeichnung von Mitgliedern von Datenklassen entwickelt worden zu sein, die für den Endbenutzer sichtbar sind. Daher eignet es sich besser für DTOs, Entitäten und andere Dinge dieser Art. Ich finde es ziemlich bedauerlich, dass sie es eingeschränkt haben, so dass es nicht für Klassen verwendet werden kann.BEARBEITEN: Es sieht so aus, als ob die neueste .NET Core-Quelle
DisplayAttribute
jetzt auch für Klassen verwendet werden kann.quelle
Vielleicht ist dies spezifisch für den .net-Kern. Ich habe festgestellt, dass DisplayName nicht funktioniert, Display (Name = ...) jedoch. Dies kann jemand anderem die Fehlerbehebung ersparen :)
quelle