ModelMetaData är ett viktigt begrepp inom MVC, inklusive men inte begränsat till modelltypen, vilka attribut modellen innehåller, vilka typer av attribut som finns och vilka egenskaper som finns på attributen.
ASP.NET MVC3.0 tillhandahåller standardmetadata DataAnnotationsModelMetadata ärver från ModelMetadata (dessutom tillhandahåller systemet standardmodellmetadataleverantören DataAnnotationsModelMetadataProvider)
publik klass DataAnnotationerModellMetadata : Modellmetadata
Dess konstruktör är som följer
publik DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
DataAnnotationsModelMetadata-klassen har flera vanligt använda egenskaper
DisplayName-visningsnamn, DisplayFormatString-formatsträng
TemplateHint får ett värde för att välja vilken mall som ska användas
För DisplayName använder metoden LabelFor<TModel, TValue> denna egenskap för att generera etiketttexten. Det betyderNär egenskapen DispalyName är definierad i vår modell, använd då metoden html.editForModel() i visningenDen visar automatiskt etiketttaggen " <label for="username" > namn </ för detta attribut</label> i modellen.
[display( name="name",order=2)] //order-attributet ändrar ordningen på html-sidan publik stränganvändarnamn { get; set; }
HTML-källkod:
Display-egenskapen som används på användarnamnsattributet är klassen System.ComponentModel.DataAnnotations.DisplayAttribut, som ger en generisk funktion som låter dig specificera lokaliserbara strängar för typen och medlemmen i entitetsdivisionsklassen
Det finns också funktioner från System.Web.MVC och System.ComponentModel.DataAnnotations, vars namn alla är funktionsklasser liknande XXXXAttribute, alla med specifika användningsområden, vissa begränsar modellens egenskaper, vissa begränsar Contrller, vissa begränsar åtgärder, osv.
Följande är en lista över inbyggda och vanligt använda funktionsklasser i dessa två namnrymder
1) System.Web.MVC-utrymme
AcceptVerbsAttribute,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute representerar basklassen för alla action-filter-egenskaper
HttpDeleteAttribut-klassen, som representerar en egenskap som används för att begränsa operationsmetoden så att metoden endast hanterar HTTP DELETE-förfrågningar
HttpGetAttribute, ett HttpPostAttribut-attribut som begränsar operationsmetoden till att endast behandla PUT-förfrågningar
HttpPutAttribute representerar en egenskap som används för att begränsa operationsmetoden så att metoden endast hanterar HTTP PUT-förfrågningar.
Exempel: ActionNameAttribute specificerar det faktiska åtgärdsnamnet på åtgärden, och användningen är som följer
[ActionName()]
publikt ActionResult Index()
Exempel: Klassen HiddenInputAttribut, som representerar en egenskap som anger om ett egenskapsvärde eller fältvärde ska renderas som ett dolt indataelement |