ModelMetaData is een belangrijk concept in MVC, inclusief maar niet beperkt tot het type model, welke attributen het model bevat, welke soorten attributen er zijn en welke kenmerken op de attributen staan.
ASP.NET MVC3.0 levert de standaard modelmetadata DataAnnotationsModelMetadata van ModelMetadata (daarnaast levert het systeem de standaard modelmetadataprovider DataAnnotationsModelMetadataProvider)
publieke klasse DataAnnotatiesModelMetadata : ModelMetadata
De constructor ervan is als volgt
publieke DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
De DataAnnotationsModelMetadata-klasse heeft verschillende veelgebruikte eigenschappen
DisplayName weergavenaam, DisplayFormatString-formaatstring
TemplateHint krijgt een waarde om te kiezen welke template je gebruikt
Voor DisplayName gebruikt de LabelFor<TModel, TValue> methode deze eigenschap om de labeltekst te genereren. Het betekentZodra de DispalyName-eigenschap op ons model is gedefinieerd, gebruik dan de html.editForModel()-methode in het zichtHet zal automatisch de labeltag " <label for="username" > naam </ voor dit attribuut</label> van het model weergeven.
[display( name="name",order=2)] //order-attribuut verandert de volgorde van de html-pagina publieke string gebruikersnaam { get; set; }
HTML-broncode:
De Display-eigenschap die wordt gebruikt op het gebruikersnaamattribuut is de System.ComponentModel.DataAnnotations.DisplayAttribute klasse, die een generieke functie biedt waarmee je lokaliseerbare strings kunt specificeren voor het type en lid van de entiteitsdivisieklasse
Er zijn ook functies van System.Web.MVC en System.ComponentModel.DataAnnotations, waarvan de namen allemaal featureklassen zijn vergelijkbaar met XXXXAttribute, die allemaal specifieke gebruiksgebieden hebben, sommige beperken modeleigenschappen, sommige beperken Contrller, sommige beperken Acties, enzovoort.
Hieronder volgt een lijst van ingebouwde en veelgebruikte featureklassen in deze twee naamruimtes
1) System.Web.MVC-ruimte
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribuut
ActionFilterAttribute vertegenwoordigt de basisklasse van alle actiefiltereigenschappen
HttpDeleteAttribut-klasse, die een eigenschap vertegenwoordigt die wordt gebruikt om de operationele methode te beperken zodat de methode alleen HTTP DELETE-verzoeken afhandelt
HttpGetAttribute, een HttpPostAttribute-attribuut dat de operatiemethode beperkt tot alleen het verwerken van PUT-verzoeken
HttpPutAttribute vertegenwoordigt een eigenschap die wordt gebruikt om de operatiemethode te beperken zodat de methode alleen HTTP PUT-verzoeken afhandelt.
Voorbeeld: ActionNameAttribute specificeert de daadwerkelijke actienaam van de actie, en het gebruik is als volgt
[ActieNaam()]
publieke ActionResult Index()
Voorbeeld: De HiddenInputAttribut-klasse, die een eigenschap vertegenwoordigt die aangeeft of een eigenschapswaarde of veldwaarde als een verborgen invoerelement moet worden weergegeven |