ModelMetaData er et vigtigt begreb i MVC, herunder men ikke begrænset til modeltypen, hvilke attributter modellen indeholder, hvilke typer attributter der findes, og hvilke karakteristika der findes på attributterne.
ASP.NET MVC3.0 leverer standardmodelmetadata, DataAnnotationsModelMetadata arver fra ModelMetadata (derudover leverer systemet standardmodelmetadata-udbyderen DataAnnotationsModelMetadataProvider)
offentlig klasse DataAnnotationerModelMetadata : ModelMetadata
Dens konstruktør er som følger
offentlige DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
DataAnnotationsModelMetadata-klassen har flere almindeligt anvendte egenskaber
DisplayName displaynavn, DisplayFormatString formatstreng
TemplateHint får en værdi til at vælge, hvilken skabelon der skal bruges
For DisplayName bruger LabelFor<TModel, TValue> metoden denne egenskab til at generere labelteksten. Det betyderNår DispalyName-egenskaben er defineret på vores model, så brug html.editForModel()-metoden i visningenDen vil automatisk vise label-tagget " <label for="brugernavn" > navn </ for denne attribut</label> i modellen.
[display( name="name",order=2)] //order-attributten ændrer rækkefølgen på html-siden offentlig streng brugernavn { get; sat; }
HTML-kildekode:
Display-egenskaben, der bruges på brugernavn-attributtet, er System.ComponentModel.DataAnnotations.DisplayAttribut-klassen, som giver en generisk funktion, der gør det muligt at specificere lokaliserbare strenge for typen og medlemmet af entitetsdivisionsklassen
Der er også funktioner fra System.Web.MVC og System.ComponentModel.DataAnnotations, hvis navne alle er featureklasser lignende XXXXAttribute, som alle har specifikke anvendelsesområder, nogle begrænser modelegenskaber, nogle begrænser Contrller, nogle begrænser handlinger osv.
Følgende er en liste over indbyggede og almindeligt anvendte featureklasser i disse to navnerum
1) System.Web.MVC-rum
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute repræsenterer basisklassen af alle action-filter egenskaber
HttpDeleteAttribut-klassen, som repræsenterer en egenskab, der bruges til at begrænse operationsmetoden, så metoden kun håndterer HTTP DELETE-anmodninger
HttpGetAttribute, en HttpPostAttribut-attribut, der begrænser operationsmetoden til kun at behandle PUT-forespørgsler
HttpPutAttribute repræsenterer en egenskab, der bruges til at begrænse operationsmetoden, så metoden kun håndterer HTTP PUT-forespørgsler.
Eksempel: ActionNameAttribute angiver handlingens faktiske handlingsnavn, og brugen er som følger
[ActionName()]
offentlig ActionResult Indeks()
Eksempel: Klassen HiddenInputAttribut, som repræsenterer en egenskab, der angiver, om en egenskabsværdi eller feltværdi skal gengives som et skjult inputelement |