Я начинаю работать с MVC 4 (движок просмотра Razor). (Я считаю, что это может относиться и к MVC 3 и более ранним.) Мне интересно, есть ли какая-либо польза от использования аннотации данных DisplayAttribute в представлении, а не только для написания строки непосредственно в HTML. Например, если бы я имел следующую модель:MVC 4 Data Annotations "Display" Атрибут
public class Thing
{
public string WildAndCrazyProperty { get; set; }
}
... будет ли какая-либо выгода в аннотировании собственности как:
[Display(Name = "Wild and Crazy")]
public string WildAndCrazyProperty { get; set; }
... и имеющей быть моя разметка:
<html>
<body>
<div>@Html.DisplayNameFor(modelItem => modelItem.WildAndCrazyProperty)</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
... против не имея аннотацию и делать:
<html>
<body>
<div>Wild and Crazy</div>
<div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
</body>
</html>
Причина, по которой я не упомянул Html.LabelFor
, в этом случае заключается в том, что данные свойства отображаются как статические (т. не редактируемый) текст на странице. Данные никогда не будут редактироваться на этой странице, поэтому мне не нужно использовать Html.TextBoxFor
во втором <div> и затем использовать Html.LabelFor
, чтобы правильно связать метку с этим текстовым полем.
И так я склоняюсь. Кажется, что вам нужно что-то, что действительно больше похоже на тип отображения в той части кода, которая делает фактическое отображение. Необходимость перекомпилировать проект просто изменить заголовок или два кажется ненужным. –
Я полностью согласен с точкой перекомпиляции. Я чувствую, что даже если вам приходилось использовать модель в нескольких представлениях, плюсы на то, что эти данные в атрибуте не перевешивают минусы. – eouw0o83hf
Так что мне очень нравится концепция этого ответа, но для меня это не работает. Мой класс наследования не переопределяет атрибут 'Display' базового класса. Почему? – Kehlan