我正在使用NHIBERNATE的ASP.NET应用程序中使用MVC 2.0。

我使用NHIBERNATE有一个工作视图,控制器和数据访问层,该NHIBERNATE能够显示和保存与另一个映射实体的关系的实体:

人 - >位置

它使用HTML Helper HTML.DropDownlistfor()显示所有位置的列表。用户能够从列表中选择一个位置,然后按“保存”。

默认模型活页夹正确设置了要保存的人实体上的位置值。该位置是NHIBERNATE映射的实体,已实例化,并具有在下拉列表中选择的ID值。显然,由于保留位置的下拉列表仅具有位置的ID,因此该位置的其余值为null。还行吧。我只是试图用参考现有位置来拯救该人。

因此,这是复杂的。我们需要改变两个实体之间的关系。现在,该人可以提及许多位置。

person.Locations将成为iList

我的问题是,如何使默认模型活页夹从一个 多选 下拉列表并填充了iList。

我设法使用语法[index] .propertyname作为Phil Haacked的解释。 http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx.

这里的问题是我只有一个下拉列表,它会将其发布回模型Binder一个具有不同值的重复键:

person.Location.ID:2
person.Location.ID:4
person.Location.ID:5

不幸的是,这无效。位置列表不断恢复为null。

我们的UI Guy正在使用光滑的jQuery插件在选择列表中显示项目,因此我宁愿不必使用其他UI。

有任何想法吗?

有帮助吗?

解决方案

一个建议:

将列表项的名称更改为“位置”,然后在您的操作方法中包括一个参数 string[] locations

如果MVC可以正确匹配名称,则应收到所选项目的数组。然后,您可以用适当的插入和删除来手动处理数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top