将列表框选项值传输到服务器

时间:2012-07-12 07:53:29

标签: ajax asp.net-mvc-3 listbox

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

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

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

  3. 哪一个对我的情况更好? 编辑:实现第一种方法的缺点是每次用户将内容从Listbox A传输到B时,将通过Ajax访问服务器

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

我们使用Html.TextBox助手创建了三个输入元素;这些将全部用a创建 name属性的电影值,如下所示:

<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) {
...

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

来自Apress Pro ASP.NET MVC 3 Book