Inizio a lavorare con MVC 4 (motore a vista del rasoio). (Credo che questo possa valere anche per MVC 3 e precedenti). Mi chiedo se ci sia qualche vantaggio nell'usare l'annotazione dei dati DisplayAttribute all'interno di una vista rispetto alla semplice scrittura di una stringa direttamente nell'HTML. Per esempio, se ho avuto il seguente modello:Attributo "Visualizza" annotazioni dati MVC 4
public class Thing
{
public string WildAndCrazyProperty { get; set; }
}
... ci sarebbe alcun beneficio in annotare la proprietà come:
[Display(Name = "Wild and Crazy")]
public string WildAndCrazyProperty { get; set; }
... e avere il mio markup essere:
<html>
<body>
<div>@Html.DisplayNameFor(modelItem => modelItem.WildAndCrazyProperty)</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
... rispetto a non avere l'annotazione, e facendo:
<html>
<body>
<div>Wild and Crazy</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
La ragione per cui non ho menzionato Html.LabelFor
in questo caso è perché i dati della proprietà vengono visualizzati come statici (ad es. testo non modificabile) sulla pagina. I dati non saranno mai modificabili su questa pagina, quindi non è necessario per me utilizzare Html.TextBoxFor
entro il secondo <div> e successivamente utilizzare lo Html.LabelFor
per associare correttamente un'etichetta a tale casella di testo.
E questo è il modo in cui mi sto appoggiando. Sembra che tu voglia qualcosa che è davvero più di una cosa del tipo di visualizzazione nella parte del codice che fa la visualizzazione effettiva. Dovendo ricompilare il progetto solo per cambiare una intestazione o due sembra inutile. –
Sono completamente d'accordo sul punto di ricompilazione. Mi sento anche se dovessi usare il modello in più viste, i pro di mettere quei dati in un attributo non superano i contro. – eouw0o83hf
Quindi mi piace molto il concetto alla base di questa risposta, tuttavia non funziona per me. La mia classe ereditante non sovrascrive l'attributo 'Display' della classe base. Qualche ragione per cui? – Kehlan