Zaczynam od MVC 4 (Razor view engine). (Sądzę, że może to dotyczyć także MVC 3 i wcześniejszych). Zastanawiam się, czy istnieje jakaś korzyść z używania adnotacji danych DisplayAttribute w widoku, a jedynie zapisywanie ciągu bezpośrednio w kodzie HTML. Na przykład, gdybym miał następujący model:MVC 4 Adnotacje danych "Display" Atrybut
public class Thing
{
public string WildAndCrazyProperty { get; set; }
}
... będzie tam żadnych korzyści w opisywanie właściwości jak:
[Display(Name = "Wild and Crazy")]
public string WildAndCrazyProperty { get; set; }
... io moim znaczników być:
<html>
<body>
<div>@Html.DisplayNameFor(modelItem => modelItem.WildAndCrazyProperty)</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
... versus nie posiadające adnotacji i robi:
<html>
<body>
<div>Wild and Crazy</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
Powód, dla którego nie wspomniałem w tym przypadku Html.LabelFor
, ponieważ dane właściwości są wyświetlane jako statyczne (tj. nieedytowalny) tekst na stronie. Dane nigdy nie będą edytowalne na tej stronie, więc nie ma potrzeby, aby używać Html.TextBoxFor
w drugim <div> i następnie użyć Html.LabelFor
, aby poprawnie powiązać etykietę z tym polem tekstowym.
I tak właśnie się wychylam. Wygląda na to, że w części kodu, która faktycznie wyświetla się, chciałbyś czegoś, co jest rzeczywiście bardziej typem wyświetlania. Konieczność ponownej kompilacji projektu, aby zmienić nagłówek lub dwa, wydaje się niepotrzebna. –
Całkowicie zgadzam się na punkt ponownej kompilacji. Czuję, że nawet gdybyś musiał użyć tego modelu w wielu widokach, zalety umieszczania tych danych w atrybucie nie przewyższają wad. – eouw0o83hf
Bardzo podoba mi się koncepcja, która kryje się za tą odpowiedzią, ale nie działa dla mnie. Moja klasa dziedzicząca nie zastępuje atrybutu "Display" klasy bazowej. Jakiś powód, dlaczego? – Kehlan