Я прочитал много SO сообщений об определении шаблона для @Html.DisplayFor
для логического свойства, но я не мог понять их ясно.Ваш вопрос близок к этому, и после его понимания я решил добавить новый ответ, включающий полностью все шаги для его реализации.Это может быть полезно для других людей.
1.Создание шаблона
Сначала вам нужно добавить Partial View
в путь ниже (путь очень важен):
Views/Shared/DisplayTemplates/
Например, я создал Partial View
с именем _ElementTemplate
и заполните его так:
<span>
@(@Model ? "Yes" : "No")
</span>
2.Добавление UIHint к модели
Чтобы установить связь между property
и template
, вы должны добавить атрибут UIHint
, как показано ниже в классе вашей модели:
[UIHint("_YesOrNoTemplate")]
public bool MyProperty { get; set; }
3.Использование @ Html.DisplayNameFor в представлении
В каждом представлении, в котором вам нужно это свойство, вы можете использовать следующий код:
<div>
@Html.DisplayFor(modelItem => item.MyProperty)
</div>
Выход
Код выше приведен к коду ниже в моем примере (if (MyProperty == true)
):
<div>
<span>
Yes
</span>
</div>
Настройка атрибутов
Для настройки id
или другихhtml атрибуты, которые вы можете использовать ModelMetadata , например:
<span id="@ViewData.ModelMetadata.PropertyName">
@(@Model ? "Yes" : "No")
</span>
Вывод с атрибутом
<div id="MyProperty">
<span>
Yes
</span>
</div>