C# 使用jquery创建列表并将其发布到asp.net mvc
我正在寻找一种方法,将给定类的所有现有复选框的值存储到某种列表或数组中,并通过jquery将结果发送到asp.net mvc控制器。不必选中复选框,我需要所有复选框 更多详情: 我的复选框是这样的C# 使用jquery创建列表并将其发布到asp.net mvc,c#,javascript,jquery,.net,asp.net-mvc-3,C#,Javascript,Jquery,.net,Asp.net Mvc 3,我正在寻找一种方法,将给定类的所有现有复选框的值存储到某种列表或数组中,并通过jquery将结果发送到asp.net mvc控制器。不必选中复选框,我需要所有复选框 更多详情: 我的复选框是这样的 <input type="checkbox" value="1" class="a-checkbox" <input type="checkbox" value="2" class="a-checkbox" <input type="checkbox" value="3" class
<input type="checkbox" value="1" class="a-checkbox"
<input type="checkbox" value="2" class="a-checkbox"
<input type="checkbox" value="3" class="a-checkbox"
public JsonResult SaveList(List<String> values) { //... }
但是我不知道如何创建这样的数据结构。你能帮我吗
多谢各位
编辑:很好,谢谢。你能告诉我这有什么问题吗?确实调用了我的控制器,但列表为空(在服务器端)
这将把所有
复选框
值(值
属性)放入数组
:
var values = [];
$(".a-checkbox").each(function () {
values.push($(this).val());
});
// values now equals ["1", "2", "3"]
试试这个
var list = [];
$('input.a-checkbox').each(
function () {
// create the list with the help of $(this).val()
list.push($(this).val());
}
);
现在,您可以将list
对象发布到mvc控制器操作中。我使用.Serialize()为mvc ajax操作格式化表单数据
var checkPostData = $(".a-checkbox").serialize();
我在MVC模式和所有模式下都有相同的问题空值。我发现使用$(“input:checked”)作为我的数据,而不是在js中尝试将值提取到数组中效果更好,我通过给复选框命名值来修复空值问题,因为MVC绑定了输入名称 HTML
这会产生一个查询字符串(例如:
a=1&b=2&c=3&d=4&e=5
),而不是一个数组。他确实说过“那太好了…”而不是“它是必需的”:P mvc模型绑定器通常能很好地处理细节。你的权利可能不是OP想要的。多亏了你们,也许你可以看看上面的m编辑?postjQuery出现问题将序列化您的list
使用。有一个示例说明如何在链接页面上序列化数组
s。如果值为null,则表示存在模型绑定错误。下面是一个扩展方法,用于在调试中将绑定错误转储到控制台:
var list = [];
$('input.a-checkbox').each(
function () {
// create the list with the help of $(this).val()
list.push($(this).val());
}
);
var checkPostData = $(".a-checkbox").serialize();
<a class="post-checkboxes" href="#">post checkboxes</a>
<input name="[MVC viewmodel list variable name]" type="checkbox" value="1" />
<input name="[MVC viewmodel list variable name]" type="checkbox" value="2" />
$('.post-checkboxes').click(function (e) {
e.preventDefault();
$.post("[location to post to]", $("input:checked"));
});