如何在MVC3 View中表示多对多选择?

时间:2011-02-20 13:08:23

标签: html asp.net-mvc forms asp.net-mvc-3 many-to-many

在我的模型中,我有一个Product对象,我有一个Author对象,它们有多对多的关系,所以我也有一个ProductAuthor对象。
在功能上,我想在我的视图中有一个文本框,用户可以在其中输入作者姓名,我将搜索它(使用Ajax),并在下面显示一些结果,然后用户可以单击添加一个(或更多),并在此搜索框旁边显示所选的。然后,当我在表单上按Save时,所有内容都会保存(在控制器中),而不是之前(因此没有异步AddAuthor方法)。
此外,如果我加载要编辑的产品,并且它已经附加了作者,我希望它们被显示,并且用户必须能够取消选择它们(所以当他按下保存时,它们将不再被连接。)

我如何在视图中表示它?如果我必须在显示器上编写一个foreach循环,这是好的,但是在提交时它们将如何发送?我是否为每个选定的作者生成了隐藏字段?如果是这样,我如何命名,所以我可以在控制器中访问它们?它们可以以某种方式被序列化为类型化实体,还是我必须在FormCollection中查找它们?

奖励点如果我可以使用相同的东西而对一对多关系进行很少的更改(当一篇文章只能有一个作者,但我不想使用dropdownlist,因为可以许多作者,并且它不可搜索,如果我为多对多场景编写异步FindAuthor,我也想在一对多中使用它。

1 个答案:

答案 0 :(得分:1)

如果是产品编辑,则会有多个作者要选择,因此您可以存储在隐藏字段中。不需要多个隐藏字段。只需附加作者ID

<input id="authorIDs" type="hidden" value="56,64,33" />

您可以使用 FormCollection Typed Entity 来获取此数据。