2009-08-26 16 views
5

Wir verwenden ASP.NET MVC zusammen mit NHibernate und wir möchten mehrere Dropdown-Listen mit Werten (benutzerdefinierte Klasse) aus der Datenbank erstellen. Das funktioniert tatsächlich, aber wie handhabe ich den "leeren" Wert; Ich meine, der "nicht ausgewählte" DropDownValue? Etwas wie "- Select -" oben auf der Liste ... Hat jemand Erfahrung mit dieser Kombination NHibernate, ASP.NET MVC und Dropdown?Arbeiten mit NHibernate, ASP.NET MVC und Dropdown

Danke!

Antwort

1

Ich denke, das ist einfach mit einer ViewModel-Klasse behandelt werden. Sagen wir, Sie haben eine OrderView in Ihrer App, die eine Bestellung anzeigt. In dieser Ansicht haben Sie eine Dropdown-Liste "Artikeltyp" mit einer Liste von Artikeltypen.

Das Modell, das zu Ihrer Ansicht zugeführt werden sollte sollte eine Klasse wie OrderViewModel sein, die eine Liste von ItemType Objekte enthält. Wenn der Controller die Liste der ItemType-Objekte mithilfe von NHib aus dem DB lädt, kann er zusätzliche "spezielle" Elementtypen in die Sammlung einfügen, z. B. eine für "- SELECT".

Mit anderen Worten, binden Sie nicht direkt an eine Nhibernate Collection Mapping-Eigenschaft - verwenden Sie Nhibernate, um Daten in eine Liste zu laden, die Sie dann beliebig bearbeiten können.

+1

hallo HokieMike, vielen Dank für Ihren ersten Vorschlag! Ich verwende bereits das ViewModel Pattern. (übrigens, es wird kniffliger wenn Master/Details Views dem Spiel beitreten) So mache ich es im Moment: In der View rufe ich die Methode "AsSelectList" auf der benutzerdefinierten Klasseneigenschaft auf, die mir die SelectList zurückgibt von diesem Dropdown-Typ. Innerhalb dieser Methode wird der "- Select -" aus der Datenbank mit dem IdValue 1 hinzugefügt. Dies funktioniert ohne Probleme. Aber wenn es darum geht, das Objekt zu speichern, würde ich lieber "NULL" in der Datenbank haben, wenn "- Select -" ausgewählt wurde und nicht der Fremdschlüssel 1 von "- Select -" ... – stromflut

0

beste Weg, um einen „--Auswahl--“ Wert in Dropdown haben wird der Parameter option sein, die

dann in Html.DropDownList verfügbar speichern „null“ zu Ihrer Datenbank und Sie sollten eine saubere Art und Weise haben ;)

<%= Html.DropDownList("myDropdown",mylist,"--please choose--" %>