2014-12-29 9 views
0

У меня есть следующие два перечислений:редактор дисплея для различных перечислений

public enum Status{ 
     Active, Finished, Late 
    } 


    public enum Priority{ 
     Urgent, Normal,Low, High 
    } 

Поэтому в основном я хотел бы, чтобы отобразить их в разных стилях.

Для активного статуса, я хотел бы иметь зеленый ярлык для позднего статуса. Я хотел бы иметь красную этикетку.

Такая же идея для приоритета, для срочности, я хотел бы отобразить красную метку и Normal с зеленой меткой.

Есть ли простой способ сделать это, а не делать заявления повсюду?

Я использую бритву.

+1

Возможно, вы захотите включить элемент управления, который вы используете для отображения элементов. Возможно, разметка, используемая для * в настоящее время *, отображает их. – BradleyDotNET

+0

вы можете определить свои пользовательские шаблоны: http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html –

ответ

2

MVC не делать такие вещи автомагически но что-то, как это будет работать:

<label class="[email protected](Model.Status.ToString().ToLowerInvariant())">...</label> 

Я бы предпочел, чтобы обернуть эту логику в вспомогательный метод, такие как:

public static string CssClass(this Enum e) 
{ 
    string result = e.GetType().Name + "-" + e.ToString(); 
    return result.ToLowerInvariant(); 
} 

и вы d просто напишите:

<label class="@Model.Status.CssClass()">...</label> 
+0

также есть шаблоны для автоматического отображения и редактирования. поэтому я спросил, есть ли простой способ. – DarthVader

+0

это кажется простым способом для меня. – Shoe

+0

@DarthVader Я добавил более идиоматический способ, возможно, вам может понравиться это лучше. –

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