2012-03-22 17 views
18

Ho una proprietà booleana IsActive. Nella vista c'è una lista di oggetti con le loro proprietà (incluso IsActive). Ma nella lista IsActive è una casella di controllo non modificabile poiché è booleana. Se cambio DisplayFor() a DisplayTextFor() allora visualizzerà solo True o false invece di checkbox. Come posso modificare True e Falso su 'Attivo' e 'Disattivo' dove Attivo è vero e Disattivo è falso?Modifica Html.DisplayPer casella di controllo booleano MVC

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

E poi vorrei lo stile del 'attivo' di verde e 'inattivo' al rosso

risposta

29

È possibile utilizzare un modello di visualizzazione per formattare il modo in cui viene visualizzata la vostra proprietà.

Creare una cartella DisplayTemplates sotto ~/Shared o nella cartella Visualizza dove esiste la vista che utilizzerà questo modello.

Aggiungi una nuova vista parziale a questa cartella. Assegna un nome a ciò che desideri, ad es. IsActive.cshtml

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

Ora aggiungere l'annotazione dei dati per la vostra proprietà per fargli sapere per utilizzare questo modello di visualizzazione.

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

Usa Html.DisplayFor su qualsiasi bool con questa annotazione e verrà formattato secondo il modello con il nome corrispondente di visualizzazione. Con alcuni ritocchi, è possibile posizionare lo stile di cambio colore direttamente nel modello di visualizzazione.

+4

È inoltre possibile applicare il modello con il parametro 'templateName' di' Html.DisplayFor'. – NicolasF

2

si può provare questo:

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

Questa è una domanda vecchia, ma questo potrebbe aiutare qualcuno. Ho avuto lo stesso identico problema e risolto con @(IsFooBar ? "Yes" : "No").

Problemi correlati