【问题标题】:Working with NHibernate, ASP.NET MVC and Dropdown使用 NHibernate、ASP.NET MVC 和 Dropdown
【发布时间】:2009-09-17 17:50:33
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: asp.net-mvc nhibernate drop-down-menu


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨 HokieMike,非常感谢您的第一个建议!我已经在使用 ViewModel 模式了。 (顺便说一句,如果主/详细视图加入游戏,它会变得更棘手)这就是我现在的做法:在视图上,我在自定义类属性上调用方法“AsSelectList”,它返回给我的 SelectList那个下拉类型。在此方法中,“--Select--”从数据库中添加,IdValue 为 1。这可以正常工作。但是如果要保存对象,如果选择了“--Select--”而不是“--Select--”的外键1,我更愿意在数据库中使用“NULL”......跨度>
    【解决方案2】:

    在 Dropdown 中使用“--select--”值的最佳方法是 Html.DropdownList 中提供的参数 optionLabel

    然后将“null”保存到您的数据库中,您应该有一个干净的方法;)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      相关资源
      最近更新 更多