Изменение Html.Display для логического флажка MVC - PullRequest
20 голосов
/ 22 марта 2012

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

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

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

Ответы [ 3 ]

31 голосов
/ 22 марта 2012

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

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

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

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

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

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

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

4 голосов
/ 23 августа 2016

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

3 голосов
/ 14 мая 2013

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

@if (item.IsActive) 
{ 
    @string.Format("Active");
}
else
{ 
    @string.Format("Inactive");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...