我在使用 NHibernate 的 ASP.NET 应用程序中使用 MVC 2.0。
我有一个使用 NHibernate 的工作视图、控制器和数据访问层,它能够显示和保存与另一个映射实体有关系的实体:
人 --> 位置
它使用 HTML 帮助器 HTML.DropDownListFor() 来显示所有位置的列表。用户可以从列表中选择一个位置,然后按保存。
默认模型绑定器正确设置正在保存的 Person 实体上的 Location 值。此位置是一个休眠映射实体,并且已实例化并具有在下拉列表中选择的 id 值。显然,由于保存位置的下拉列表仅具有位置的 id,因此该位置的其余值为空。还行吧。我只是想通过对现有位置的引用来保存 Person 。
所以,复杂性来了。我们需要改变两个实体之间的关系。现在 Person 可以引用许多位置。
Person.Locations 将是一个 IList
我的问题是,如何让默认模型绑定器从多选下拉列表中进行选择并填充 IList。
过去,我设法使用 Phil Haacked 解释的语法 [index].PropertyName 保存实体集合 .... http://haacked.com/archive/2008/10/23/model-binding-to -a-list.aspx。
这里的问题是我只有一个下拉列表,它会将具有不同值的重复键发回模型绑定器:
Person.Location.Id:2
Person.Location.Id:4
Person.Location.Id:5
不幸的是,这不起作用。位置列表不断返回 Null。
我们的 UI 人员正在使用一个漂亮的 JQuery 插件来显示选择列表中的项目,所以我宁愿不必使用不同的 UI。
有任何想法吗?