ModelMetaData è un concetto importante nell'MVC, che include ma non si limita al tipo di modello, quali attributi contiene il modello, quali tipi di attributi sono presenti e quali caratteristiche presenti sugli attributi.
ASP.NET MVC3.0 fornisce i metadati predefiniti del modello DataAnnotationsModelMetadata ereditano da ModelMetadata (inoltre, il sistema fornisce il fornitore predefinito di metadati del modello DataAnnotationsModelMetadataProvider)
classe pubblica DataAnnotationsModelMetadata : ModelMetadata
Il suo costruttore è il seguente
pubblicoDataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Tipo containerType, Func modelAccessor, Type modelType, stringa propertyName, DisplayColumnAttribute displayColumnAttribute);
La classe DataAnnotationsModelMetadata possiede diverse proprietà comunemente utilizzate
Nome visualizzato DisplayName, stringa di formato DisplayFormat
TemplateHint ottiene un valore per scegliere quale modello usare
Per DisplayName, il metodo LabelFor<TModel, TValue> utilizza questa proprietà per generare il testo dell'etichetta. SignificaUna volta definita la proprietà DispalyName sul nostro modello, si utilizza il metodo html.editForModel() in vistaVisualizzerà automaticamente il tag etichetta "<etichetta per="username" > nome </ per questo attributo</label> del modello.
[display( name="name",order=2)] //ordine modifica l'ordine della pagina HTML Nome utente della stringa pubblica { get; set; }
Codice sorgente HTML:
La proprietà Display utilizzata nell'attributo username è la classe System.ComponentModel.DataAnnotations.DisplayAttribute, che fornisce una funzione generica che permette di specificare stringhe localizzabili per il tipo e il membro della classe di divisione dell'entità
Ci sono anche funzionalità di System.Web.MVC e System.ComponentModel.DataAnnotations, i cui nomi sono tutte classi di feature simili a XXXXAttribute, tutte con ambiti d'uso specifici, alcune limitano proprietà del modello, altre limitano Contrller, altre limitano Azioni, ecc.
Di seguito è riportato un elenco delle classi di feature integrate e comunemente usate in questi due namespace
1) Spazio System.Web.MVC
AccettaVerbiAttributo,ActionFilterAttribute,ActionNameAttribute,AsyncTimeoutAttribute,AuthorizeAttribute,BindAttribute,
HiddenInputAttribute
ActionFilterAttribute rappresenta la classe base di tutte le proprietà del filtro d'azione
HttpDeleteAttribute, che rappresenta una proprietà utilizzata per limitare il metodo operativo in modo che il metodo gestisca solo le richieste HTTP DELETE
HttpGetAttribute, un attributo HttpPostAttribute che limita il metodo operativo a elaborare solo le richieste PUT
HttpPutAttribute rappresenta una proprietà utilizzata per limitare il metodo operativo in modo che il metodo gestisca solo le richieste HTTP PUT.
Esempio: ActionNameAttribute specifica il nome effettivo dell'azione dell'azione, e l'uso è il seguente
[NomeAzione()]
Indice di Risultati di Azione pubblica()
Esempio: la classe HiddenInputAttribute, che rappresenta una proprietà che indica se un valore di proprietà o un valore di campo debba essere reso come elemento di input nascosto |