Wofür wird DataType (DataType. *) Verwendet? [Duplikat]
Ich habe Datenattribute wie [EmailAddress]und [DatabaseGenerated(DatabaseGeneratedOption.None)]für die serverseitige Validierung in asp.net core mvc und für die Zuordnung in Entity Framework Core verwendet, aber DataType(DataType.Example)ich habe nie versucht, danach zu suchen, aber ich verstehe das Konzept oder den Zweck immer noch nicht.
Was ich also suche, ist eine Erklärung mit Beispielen für die praktische Anwendung. Sie können das folgende Beispiel als Referenz verwenden.
public class ProvidingContext
{
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[DataType(DataType.PhoneNumber)]
public string PhoneNumber { get; set; }
[DataType(DataType.Url)]
public string Url { get; set; }
[DataType(DataType.Currency)]
public double Price { get; set; }
}
Antworten
Das Attribut ist lediglich eine Anmerkung (es sagt etwas über eine Eigenschaft aus, macht aber nichts für sich) und wird als solche dokumentiert :
Stellt eine Aufzählung der Datentypen dar, die Datenfeldern und Parametern zugeordnet sind.
Was MVC damit macht, ist nicht wirklich dokumentiert. Es gibt ein offizielles MVC-Tutorial, das einige seiner Verwendungszwecke erklärt :
Die DataType-Attribute bieten nur Hinweise für das Ansichtsmodul zum Formatieren der Daten (und liefern Elemente / Attribute, z. B. für URLs und für E-Mails. Mit dem RegularExpression-Attribut können Sie das Format der Daten überprüfen. Mit dem DataType-Attribut wird a angegeben Der Datentyp ist spezifischer als der datenbankeigene Typ. Es handelt sich nicht um Validierungsattribute. In diesem Fall möchten wir nur das Datum und nicht die Uhrzeit verfolgen.
Die DataType-Aufzählung bietet viele Datentypen wie Datum, Uhrzeit, Telefonnummer, Währung, E-Mail-Adresse und mehr. Mit dem DataType-Attribut kann die Anwendung auch automatisch typspezifische Funktionen bereitstellen. Beispielsweise kann ein mailto: -Link für DataType.EmailAddress erstellt und eine Datumsauswahl für DataType.Date in Browsern bereitgestellt werden, die HTML5 unterstützen.
Die DataType-Attribute geben HTML 5-Datenattribute (ausgesprochener Datenstrich) aus, die HTML 5-Browser verstehen können. Die DataType-Attribute bieten keine Validierung.
Siehe auch:
- Führt das DataTypeAttribute für ein Modell eine Validierung in MVC 3 durch?
- EmailAddress- oder DataType.Email-Attribut
Also: Razor verwendet es zum Rendern von Attributen, sodass Browser native Validierungs- und Auswahlsteuerelemente anzeigen können (z. B. Datumsauswahl, numerische Eingabe, ...).
Zusätzlich zu dem, was @codecaster gesagt hat EmailAddress, leitet sich das Attribut von der ab DataTypeAttributeund fügt eine serverseitige Validierung hinzu, während das DataTypeAttribut nur den Eingabetyp definiert.
Das EmailAddressAttribut bietet Ihnen also beide Funktionen.