Im klassischen ASP.NET MVC Framework gibt es verschiedene DataAnnotation-Attribute für Models. So lassen sich beispielsweise die Anzeigenamen für Eigenschaften definieren. Hier verfolgt ASP.NET schon lange das DRY-Prinzip: Zum Model gehörende Validierungsdaten und Strings sollen möglichst auch im Model definiert werden. Dadurch stehen sie sowohl client- als auch serverseitig verfügbar, ohne diese jeweils doppelt definieren zu müssen.
Um Beispielsweise den Anzeigename in einem HTML-Formular zu definieren, wurde bislang das DisplayNameAttribute verwendet. Dies zeigt folgendes, an dieser Stelle bewusst sehr minimalistisch gehaltenes Beispiel:
public class User { [DisplayName("Benutzername")] public string UserName { get; set; } }
In diesem Falle würde uns ASP.NET ein Textfeld generieren, dessen Label die Beschriftung Benutzername trägt. In ASP.NET Core ist dieses Attribute zwar noch vorhanden, funktioniert jedoch nicht mehr: Die Validierung wurde komplett überarbeitet und verzichtet großteils auf die Helferklassen. Anstelle dieser kommen nun HTML-Attribute mit dem asp- Präfix zum Einsatz, welche die Lesbarkeit erhöhen:
<label asp-for="UserName"></label> <input asp-for="UserName" />
Diese übernehmen jedoch nicht die Eigenschaften des alten DisplayNameAttributes. Stattdessen gibt es ein neues DisplayAttribute, welches die Eigenschaft Name besitzt:
public class User { [Display(Name = "Benutzername")] public string UserName { get; set; } }
Damit generiert uns ASP.NET Core wieder das vollständige HTML, in diesem Beispiel:
<label for="UserName">Benutzername</label> <input name="UserName" id="UserName" />
Ansonsten kann natürlich der gewohnte Pool an Validierungs-Attributen genutzt werden, um Beispielsweise Limits oder Pflichtattribute zu nutzen:
public class User { [Required] [Display(Name = "Vorname")] [MinLength(5), MaxLength(50)] public string SureName { get; set; } }