Подтвердить что ты не робот

Изменение Html.DisplayFor boolean checkbox MVC

У меня есть логическое свойство IsActive. В представлении находится список объектов со своими свойствами (включая IsActive). Но в списке IsActive - это не редактируемый флажок, поскольку он логический. Если я изменил DisplayFor() на DisplayTextFor(), тогда вместо этого будет отображаться True или false. Как я могу изменить True и false на "Active" и "Inactive", где Active - true, а Inactive - false?

      @Html.DisplayTextFor(modelItem => item.IsActive) 

И тогда я бы нарисую "Активный" на зеленый и "Неактивный" на красный

4b9b3361

Ответ 1

Вы можете использовать шаблон отображения, чтобы отформатировать способ отображения вашего свойства.

Создайте папку DisplayTemplates либо под ~/Shared, либо в папке "Вид", где существует представление, которое будет использовать этот шаблон.

Добавить новый частичный вид в эту папку. Назовите это все, что угодно, например. IsActive.cshtml

@model bool
@if (Model == true)
{
    @Html.Encode("Active")
}
@if (Model == false)
{
    @Html.Encode("Inactive")
}

Теперь добавьте аннотацию данных к свойству, чтобы сообщить об этом шаблону отображения.

[UIHint("IsActive")]
public bool IsActive { get; set; }

Используйте Html.DisplayFor для любого bool с этой аннотацией, и он будет отформатирован в соответствии с шаблоном отображения с соответствующим именем. С некоторой настройкой вы можете поместить стиль изменения цвета непосредственно в свой шаблон дисплея.

Ответ 2

Вы можете попробовать следующее:

@if (item.IsActive) 
{ 
    @string.Format("Active");
}
else
{ 
    @string.Format("Inactive");
}

Ответ 3

Это старый вопрос, но это может помочь кому-то. У меня была такая же проблема и решалась с помощью @(IsFooBar ? "Yes" : "No").