ModelMetaData er et viktig konsept innen MVC, inkludert, men ikke begrenset til, typen modell, hvilke attributter modellen inneholder, hvilke typer attributter som finnes, og hvilke egenskaper som finnes på attributtene.
ASP.NET MVC3.0 gir standard modellmetadata DataAnnotationsModelMetadata arver fra ModelMetadata (i tillegg tilbyr systemet standardmodellmetadataleverandøren DataAnnotationsModelMetadataProvider)
offentlig klasse DataAnnotasjonerModellMetadata : ModellMetadata
Dens konstruktør er som følger
offentlig DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
DataAnnotationsModelMetadata-klassen har flere ofte brukte egenskaper
DisplayName-visningsnavn, DisplayFormatString-formatstreng
TemplateHint får en verdi for å velge hvilken mal du skal bruke
For DisplayName bruker metoden LabelFor<TModel, TValue> denne egenskapen for å generere etikettteksten. Det betyrNår DispalyName-egenskapen er definert på modellen vår, bruker vi html.editForModel()-metoden i visningenDen vil automatisk vise etiketttaggen " <label for="brukernavn" > navn </ for denne attributten</label> til modellen.
[display( name="name",order=2)] //order-attributtet endrer rekkefølgen på html-siden offentlig strengbrukernavn { get; sett; }
HTML-kildekode:
Display-egenskapen som brukes på brukernavnattributtet er System.ComponentModel.DataAnnotations.DisplayAttribut-klassen, som gir en generisk funksjon som lar deg spesifisere lokaliserbare strenger for typen og medlemmet i entitetsdivisjonsklassen
Det finnes også funksjoner fra System.Web.MVC og System.ComponentModel.DataAnnotations, hvis navn alle er funksjonsklasser lik XXXXAttribute, alle med spesifikke bruksområder, noen begrenser modellegenskaper, noen begrenser Contrller, noen begrenser handlinger, osv.
Følgende er en liste over innebygde og ofte brukte featureklasser i disse to navnerommene
1) System.Web.MVC-rom
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute representerer basisklassen til alle action-filter-egenskaper
HttpDeleteAttribut-klassen, som representerer en egenskap som brukes til å begrense operasjonsmetoden slik at metoden kun håndterer HTTP DELETE-forespørsler
HttpGetAttribute, et HttpPostAttributt-attributt som begrenser operasjonsmetoden til kun å behandle PUT-forespørsler
HttpPutAttribute representerer en egenskap som brukes til å begrense operasjonsmetoden slik at metoden kun håndterer HTTP PUT-forespørsler.
Eksempel: ActionNameAttribute spesifiserer det faktiske handlingsnavnet på handlingen, og bruken er som følger
[ActionName()]
offentlig ActionResult Index()
Eksempel: Klassen HiddenInputAttribut, som representerer en egenskap som indikerer om en egenskapsverdi eller feltverdi skal gjengives som et skjult inndataelement |