2017-11-25 1 views
0

In einer cshtml-Seite kann ich eine Klasse in Abhängigkeit von einem Datenbankwert auswählen. Beispiel:Wählen Sie eine CSS-Klasse aus einem Artikel Wert

<div class="alert @item.State" role="alert">@item.State</div> 

„Staat“ ist ein Enum meiner Tabelle wie folgt definiert:

public enum States 
{ 
    Ready, 
    Setup, 
    Pause, 
    Error, 
    Maintenance, 
    Emergency, 
    Disconnected 
} 

die Razor-Syntax oben wird eine Klasse meiner Warnung in Abhängigkeit von der Position Wert. Gut!

Aber jetzt muss ich diese Klasse zu Bootstrap "übersetzen". Beispiel:

Ready: alert-primary 
Pause or Disconnected: alert-secondary 
Error: alert-danger 
etc... 

Ich bin in der Lage dazu manuell mit Rasierer, aber ich frage mich, ob es ein bequemer Weg ist direkt an den in CSS, so etwas wie (Metacodes):

.Ready { 
    return alert-primary 
} 

.Pause, .Disconnect { 
    return alert-secondary 
} 
+0

Hallo, verwenden Sie einen Präprozessor, wie Sass oder weniger? – Kangouroops

+0

Momentan nicht. – Mark

+0

Mit sass könnte man den Unterricht erweitern. Es funktioniert genau wie OOP Vererbung –

Antwort

1

Sie können eine deklarieren Array von Strings, die die Klassennamen enthalten:

string[] ClassList = new string[] 
{ 
    "ReadyClass", "SetupClass", "PauseClass", "ErrorClass", "MaintenanceClass", "EmergencyClass", "DisconnectedClass" 
}; 

Jetzt können Sie die entsprechenden Klassennamen angezeigt werden mit der folgenden Zeile

@ClassList[(int)item.State] 

Ich habe es nicht getestet, aber es sollte funktionieren.

+0

Dies ist in der Tat eine funktionierende Lösung, obwohl in der Gruppe, die ich allgemein als "manuell mit Razor" beschrieben. – Mark

Verwandte Themen