我如何在ListBox
项目中的提交操作中获取所有asp.net mvc2
值(不仅仅是选定的项目)。
我正在使用像
这样的Ajax表单Ajax.BeginForm("actionname", new....)
只有当我选择列表框中的所有项目时,我才能获得列表框中的所有项目。
是否仍然可以在操作页面的lisbox中获取所有项目,而不仅仅是选定的项目?
答案 0 :(得分:4)
这并不像你想象的那么容易,因为从html的角度来看,只有在下拉列表中选择的值是在提交时发送给服务器的值。
但是,如果您可以使用jquery将数据作为json发送,则可以序列化列表框并将其与模型一起发送到操作。
一种方法是这样的:
想象一下,在任何给定的控制器中都有以下Action
public ActionResult MyAction(string myDropDown, string myDropDownValues)
您有这个要提交的Ajax表单
@using (Ajax.BeginForm("MyAction", new AjaxOptions()))
{
@Html.Hidden("myDropDownValues")
<select name="myDropDown" id="myDropDown">
<option value="0">First</option>
<option value="1">Second</option>
<option value="2">Third</option>
<option value="3">Fourth</option>
<option value="4">Fifth</option>
</select>
<input type="submit" id="submit" />
}
您现在要做的是挂钩表单上的提交事件:$('form').submit(function(){});
如果页面上有多个表单,则应该使用更好的选择器。在此提交事件中,您可以使用.each()
方法遍历下拉列表,然后在其中组合json。
创建json之后,您可以将其添加到隐藏字段,以便在服务器端更容易处理。
最终可能看起来像这样:
<script>
$(document).ready(function () {
$('form').submit(function () {
var json = "";
$("#myDropDown option").each(function () {
value = $(this).val()
text = $(this).html()
if (json.length != 0) json += ",";
json += value + ":" + text;
});
$('#myDropDownValues').val(json.toString());
});
});
</script>
当我现在提交表单时,字符串myDropDownValues
具有以下内容:
0:First,1:Second,2:Third,3:Fourth,4:Fifth
答案 1 :(得分:0)
试试这个
for (int i = 0; i < listBox1.Items.Count; i++) {
listBox1.SelectedIndex = i;
MessageBox.Show(listBox1.SelectedItem.ToString());
}