Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery MVC默认模型绑定器-将多选下拉列表绑定到IList_Jquery_Asp.net Mvc_Asp.net Mvc 2_Defaultmodelbinder - Fatal编程技术网

Jquery MVC默认模型绑定器-将多选下拉列表绑定到IList

Jquery MVC默认模型绑定器-将多选下拉列表绑定到IList,jquery,asp.net-mvc,asp.net-mvc-2,defaultmodelbinder,Jquery,Asp.net Mvc,Asp.net Mvc 2,Defaultmodelbinder,我正在使用NHibernate的ASP.NET应用程序中使用MVC2.0 我有一个使用NHibernate的工作视图、控制器和数据访问层,能够显示和保存与另一个映射实体有关系的实体: 人员->位置 它使用HTML助手HTML.DropDownListFor来显示所有位置的列表。用户可以从列表中选择一个位置,然后按save 默认模型绑定器正确设置要保存的个人实体上的位置值。此位置是一个nhibernate映射实体,已实例化并具有在下拉列表中选择的id值。显然,由于保存位置的下拉列表只有位置的ID,

我正在使用NHibernate的ASP.NET应用程序中使用MVC2.0

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

人员->位置

它使用HTML助手HTML.DropDownListFor来显示所有位置的列表。用户可以从列表中选择一个位置,然后按save

默认模型绑定器正确设置要保存的个人实体上的位置值。此位置是一个nhibernate映射实体,已实例化并具有在下拉列表中选择的id值。显然,由于保存位置的下拉列表只有位置的ID,因此位置的其余值为空。这没关系。我只是想通过引用现有位置来拯救此人

因此,问题来了。我们需要改变这两个实体之间的关系。现在,此人可以参考多个位置

人员。位置将是IList

我的问题是,如何让默认模型绑定器从multiselect下拉列表中选择并填充IList

我过去曾使用语法[index].PropertyName保存实体集合,Phil Haacked对此进行了解释

这里的问题是,我只有一个下拉列表,它将向modelbinder发回一个具有不同值的重复键:

Person.Location.Id:2 Person.Location.Id:4 Person.Location.Id:5

不幸的是,这不起作用。位置列表总是返回空值

我们的UI人员正在使用一个光滑的JQuery插件来显示选择列表中的项目,所以我不想使用不同的UI

有什么想法吗?

一个建议:

将列表项的名称更改为Locations,然后在操作方法中包含参数字符串[]Locations


如果MVC能够正确匹配名称,您应该会收到一个选定项目的数组。然后,您可以通过适当的插入和删除来手动更新数据库。

自从我发布之后,我添加了一个单独的操作方法参数,用于填充整数数组。然后我一次手动实例化一个位置,将它们的id设置为数组中的值,并将它们附加到Person。我想找到一种方法,让默认的模型活页夹为我做这项工作。