2012-03-22 3 views
18

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

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

И тогда я бы стиль «Активный» зеленый и «Inactive» на красный

ответ

29

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

Создайте папку 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 с этой аннотации, и он будет отформатирован в соответствии с шаблоном дисплея с соответствующим именем. С некоторой настройкой вы можете поместить стиль изменения цвета непосредственно в свой шаблон дисплея.

+4

Вы также можете применить шаблон к параметру 'templateName'' Html.DisplayFor'. – NicolasF

2

Вы можете попробовать это:

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

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

Смежные вопросы