2009-08-26 103 views
5

我们使用ASP.NET MVC和NHibernate一起使用,我们希望使用数据库中的值(自定义类)创建多个下拉列表。这实际上可行,但我该如何处理“空”值;我的意思是,“未选中”DropdownValue?就像列表顶部的“ - Select - ”一样......有没有人有这种组合NHibernate,ASP.NET MVC和Dropdown的经验?使用NHibernate,ASP.NET MVC和Dropdown

谢谢!

回答

1

我认为这很容易通过使用ViewModel类来处理。假设您的应用中有一个OrderView,该应用会显示订单。在此视图中,您有一个下拉菜单“项目类型”,其中包含项目类型列表。

应该被输送到您的视图模型应该是一类像OrderViewModel包含的ItemType对象的列表。当控制器使用NHib从数据库加载ItemType对象列表时,它可以在集合中插入额外的“特殊”项目类型,例如“ - SELECT-”。

换句话说,不要直接绑定到Nhibernate集合映射属性 - 使用Nhibernate将数据加载到列表中,然后您可以随意操作。

+1

嗨HokieMike,非常感谢您的第一个建议!我正在使用ViewModel模式。 (顺便说一句,如果主/细节视图加入游戏,它会变得更加棘手) 这就是我现在的做法:在视图上,我调用自定义类属性的方法“AsSelectList”,它返回给我的SelectList该下拉类型。在这个方法中,“--Select--”从IdValue 1的数据库中添加。这没有问题。但是如果涉及到保存对象,如果选择了“ - 选择 - ”而不是“ - 选择 - ”的外键1,我宁愿在数据库中有“NULL”... – stromflut 2009-08-27 05:54:36

0
有在下拉列表中选择“ - 选择 - ”值将是参数optionLabel这是Html.DropdownList

提供

最佳方式

然后保存“空”到你的数据库,你应该有一个清晰的方式;)

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