2017-02-13 3 views
0

Bitte berücksichtigen Sie dieses Szenario: In einigen Geschäftsdomänen gibt es einige einfache und konstante Optionen, die wir als Kombinationsfeld oder Optionsfelder implementieren können.Decodierwerte in Controller oder Ansicht in MVC

Zum Beispiel dieses Beispiel für Statuskombinationsfeld betrachten:

(Bad , 1), 
(Medium , 2), 
(Good , 3), 
(Well , 4) 

Für diese Basisinformation schaffen wir eine statische Methode (oder Eigenschaft) vom Typ List in einer Klasse und für dieses einfache und konstant wir nicht speichern sie in der Datenbank.

Jetzt betrachten wir eine schreibgeschützte Ansicht und im Modell verwenden wir StatusID, aber wir sollten diese ID für die Anzeige ihres Textes decodieren. Ich weiß (nach meiner unvollständigen Informationen) 2-Lösung:

  1. ein Ansichtsmodell erstellen und StatusText Eigenschaft, um es hinzuzufügen und in meiner Kontrolle dekodieren StatusID meine statische Methode

  2. Pass mein Modell zu betrachten und dekodiere es dort

Ich möchte wissen, was die beste Praxis für solche Szenarien ist.

Vielen Dank

+3

Warum nicht eine 'enum' verwenden? –

+0

@StephenMuecke Sorry Das ist nicht enum und ich möchte das Key-Value-Paar – Arian

+0

anzeigen Ich weiß es ist kein 'enum'. Ich frage, warum nicht ein Enum verwenden (und es viel einfacher machen) –

Antwort

2

ich sie als Enum und verwenden Sie in der Ansicht @Html.EnumDropDownListFor(m=>m.StatusId, m=> m.MyEnum) machen würde.

Wenn Sie benutzerdefinierte Anzeigeetiketten verwenden möchten, verwenden Sie die DisplayAttribute für die Enum-Elemente.

aktualisieren

Wenn Sie nur den Wert in einem Etikett zeigen wollen, würde ich noch empfehlen eine Enum und in der Ansicht mit: <div>(@Model.Status.ToString() , @((int)Model.Status))</div>. Sie können <div> mit dem Element ersetzen, das Sie benötigen.

+0

Ich denke, es erstellt eine "DropDownList", aber ich möchte nur eine "Label" – Arian

Verwandte Themen