0

我有一个表单,其中包含 2 个列表框以及其他输入字段。通过单击按钮,我将内容(列表框中的选项)从一个列表框移动到另一个列表框(左右或反之亦然)。像这个例子。现在我需要服务器上两个列表框的内容。在表单提交时,我只能将列表框中的选定值传输到服务器,而不是所有选项。所以我有两个选择:

  1. 在从左到右传输内容的按钮的单击事件中,我进行了 Ajax 调用,将内容发送到服务器。

  2. 在提交表单之前,我将列表框的所有值放在一个隐藏字段中,以便表单提交,我可以在服务器上访问它

这些哪个更适合我的情况?编辑:实现第一种方法的缺点是每次用户将内容从列表框 A 传输到 B 时,都会通过 Ajax 访问服务器

4

2 回答 2

0

我会在第一个页面加载时发送列表框的所有内容(如果对您可行),并使用 jquery 在列表之间移动项目(因此不再需要 ajax 调用)

并将项目发送回服务器,如下例所示:

@using (Html.BeginForm()) {
@Html.TextBox("movies")
@Html.TextBox("movies")
@Html.TextBox("movies")
<input type=submit />
}

我们使用 Html.TextBox 帮助器创建了三个输入元素;这些都将使用名称属性的电影值创建,如下所示:

<input id="movies" name="movies" type="text" value="" />
<input id="movies" name="movies" type="text" value="" />
<input id="movies" name="movies" type="text" value="" />

我们可以使用示例 17-11 中所示的操作方法接收用户输入的值。清单 17-11。在一个动作方法中接收多个数据项

[HttpPost]
public ViewResult Movies(List<string> movies) {
...

模型绑定器将找到用户提供的所有值并将它们传递给 List 中的 Movies 操作方法。binder 足够智能,可以支持不同的参数类型;我们可以选择以 string[] 甚至 IList 的形式接收数据。

来自 Apress Pro ASP.NET MVC 3 书

于 2012-07-12T08:07:14.287 回答
0

您也可以listbox再次查询源以获取未在 post 方法中选择的其他值

于 2012-07-12T08:01:15.730 回答