2012-03-22 26 views
18

Tengo una propiedad booleana IsActive. En la vista hay una lista de objetos con sus propiedades (incluido IsActive). Pero en la lista, el IsActive es una casilla no editable ya que es booleana. Si cambio DisplayFor() a DisplayTextFor(), solo mostrará True o false en lugar de checkbox. ¿Cómo puedo cambiar True and false a 'Active' e 'Inactive' donde Active es verdadero e Inactive es falso?Cambiar Html.DisplayFor casilla de verificación booleana MVC

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

Y entonces yo estilo del 'Activo' a verde y 'inactivo' a rojo

Respuesta

29

Puede utilizar una plantilla de visualización para formatear la forma de visualización de su propiedad.

Cree una carpeta DisplayTemplates en ~/Shared o en la carpeta Ver donde se encuentra la vista que utilizará esta plantilla.

Agregue una nueva vista parcial a esta carpeta. Nombra cualquier cosa que desees, p. IsActive.cshtml

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

Ahora añadir una anotación de datos de su propiedad para que éste sepa utilizar esta plantilla de visualización.

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

Uso Html.DisplayFor en cualquier bool con esta anotación y será formateado de acuerdo con la plantilla de visualización con el nombre coincidente. Con algunos ajustes, puede colocar el estilo de cambio de color directamente en su plantilla de visualización.

+4

También puede aplicar la plantilla con el parámetro 'templateName' de' Html.DisplayFor'. – NicolasF

2

Puede probar esto:

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

Ésta es una cuestión de edad, pero esto podría ayudar a alguien. Tuve exactamente el mismo problema y lo resolví con @(IsFooBar ? "Yes" : "No").

Cuestiones relacionadas