ModelMetaData ist ein wichtiges Konzept im MVC, das unter anderem den Modelltyp, die enthaltenen Attribute, die vorhandenen Attributarten und welche Eigenschaften auf den Attributen enthalten sind, einschließt.
ASP.NET MVC3.0 stellt die Standardmodellmetadaten DataAnnotationsModelMetadata von ModelMetadata bereit (zusätzlich stellt das System den Standardmodell-Metadatenanbieter DataAnnotationsModelMetadataProvider bereit)
öffentliche Klasse DatenAnnotationenModellMetadaten : ModellMetadaten
Sein Konstruktor ist wie folgt
öffentliche DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
Die Klasse DataAnnotationsModelMetadata besitzt mehrere häufig verwendete Eigenschaften
DisplayName-Anzeigename, DisplayFormatString-Zeichenkette
TemplateHint erhält einen Wert, um zu wählen, welche Vorlage verwendet wird
Für DisplayName verwendet die Methode LabelFor<TModel, TValue> diese Eigenschaft, um den Labeltext zu erzeugen. Es bedeutetSobald die DispalyName-Eigenschaft in unserem Modell definiert ist, verwenden Sie die html.editForModel()-Methode im AufrufEs zeigt automatisch das Label-Tag " <label for="username" > Name </ für dieses Attribut</label> des Modells an.
[display( name="name",order=2)] //order-Attribut ändert die Reihenfolge der HTML-Seite öffentlicher String-Benutzername { get; Set; }
HTML-Quellcode:
Die Display-Eigenschaft, die für das Benutzername-Attribut verwendet wird, ist die Klasse System.ComponentModel.DataAnnotations.DisplayAttribut, die eine generische Funktion bietet, mit der Sie lokalisierbare Zeichenketten für den Typ und das Mitglied der Entitätsdivisionsklasse angeben können
Es gibt außerdem Funktionen von System.Web.MVC und System.ComponentModel.DataAnnotations, deren Namen alle Feature-Klassen ähnlich wie XXXXAtribute sind, die alle spezifische Anwendungsbereiche haben, einige beschränken Modelleigenschaften, einige Contrller, manche Actions usw.
Im Folgenden eine Liste der eingebauten und häufig verwendeten Feature-Klassen in diesen beiden Namensräumen aufgeführt
1) System.Web.MVC-Raum
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute stellt die Basisklasse aller Aktionsfilter-Eigenschaften dar
HttpDeleteAttribut-Klasse, die eine Eigenschaft darstellt, die verwendet wird, um die Operationsmethode so einzuschränken, dass die Methode nur HTTP-DELETE-Anfragen verarbeitet
HttpGetAttribute, ein HttpPostAttribut, das die Operationsmethode darauf beschränkt, nur PUT-Anfragen zu verarbeiten
HttpPutAttribute stellt eine Eigenschaft dar, die verwendet wird, um die Operationsmethode so einzuschränken, dass die Methode nur HTTP-PUT-Anfragen verarbeitet.
Beispiel: ActionNameAttribute gibt den tatsächlichen Aktionsnamen der Aktion an, und die Verwendung ist wie folgt
[ActionName()]
öffentlicher ActionResult Index()
Beispiel: Die HiddenInputAttribut-Klasse, die eine Eigenschaft darstellt, die angibt, ob ein Eigenschaftswert oder Feldwert als verstecktes Eingabeelement dargestellt werden soll |