MVC默认模型活页夹 - 绑定多选择下拉列表与IList
-
02-10-2019 - |
题
我正在使用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可以正确匹配名称,则应收到所选项目的数组。然后,您可以用适当的插入和删除来手动处理数据库。