2009-08-26 10 views
5

Nous utilisons ASP.NET MVC avec NHibernate et nous aimerions créer plusieurs listes déroulantes à l'aide de valeurs (classe personnalisée) de la base de données. Cela fonctionne réellement, mais comment puis-je gérer la valeur "vide"; Je veux dire, le DropdownValue "non sélectionné"? Quelque chose comme "- Select -" en haut de la liste ... Quelqu'un at-il une expérience avec cette combinaison NHibernate, ASP.NET MVC et Dropdown?Utilisation de NHibernate, ASP.NET MVC et Dropdown

Merci!

Répondre

1

Je pense que cela est facilement géré en utilisant une classe ViewModel. Disons que vous avez un OrderView dans votre application, qui affiche une commande. Dans cette vue, vous disposez d'une liste déroulante "Type d'élément" contenant une liste de types d'éléments.

Le modèle qui devrait être envoyé à votre point de vue doit être une classe comme OrderViewModel qui contient une liste de ItemType objets. Lorsque le contrôleur charge la liste des objets ItemType de la base de données à l'aide de NHib, il peut ensuite insérer des types d'élément "spéciaux" supplémentaires dans la collection, par exemple un pour "--SELECT--". En d'autres termes, ne vous attachez pas directement à une propriété de mappage de collection Nhibernate - utilisez Nhibernate pour charger des données dans une liste que vous pouvez ensuite manipuler à volonté.

+1

salut HokieMike, merci beaucoup pour votre première suggestion! J'utilise déjà le pattern ViewModel. (à propos, ça devient plus compliqué si les vues Master/Details rejoignent le jeu) Voici comment je le fais pour le moment: Sur la View j'appelle la méthode "AsSelectList" sur la propriété de classe personnalisée qui me renvoie la SelectList de ce type de liste déroulante. Dans cette méthode, le "--Select--" est ajouté à partir de la base de données avec l'IdValue 1. Cela fonctionne sans problèmes. Mais s'il s'agit de sauver l'objet, je préférerais avoir "NULL" dans la BD si "--Sélection--" a été sélectionné et non la clé étrangère 1 de "--Sélectionner" ... – stromflut

0

La meilleure façon d'avoir une valeur « --sélectionnez-- » dans Dropdown sera le paramètre optionLabel qui est disponible dans Html.DropDownList

Enregistrez ensuite « null » à votre base de données et vous devriez avoir une manière propre ;)

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