我在javascript中创建了一个数组。现在我想使用数组控制器。目前我正在使用FormCollection
来访问表单中的数据。有没有办法在FormCollection
中访问我的javascript数组,或者作为Html.BeginForm()
中的参数?
我尝试使用我在论坛上找到的一些示例来做一个JSON帖子但是控制器中的数组为null。你能帮助我找到在控制器中访问我的javascript数组的最佳方法吗?
<script type="text/javascript">
var $checkboxes = $('input[type="checkbox"]');
$(document).ready(function () {
$('#saveBtn').click(function () {
var checkList = new Array();
$.each($checkboxes, function () {
if ($(this).is(':checked')) {
checkList.push('checked');
}
else
checkList.push('unchecked');
});
alert(checkList);
});
});
</script>
更新1
$(document).ready(function () {
$('#saveBtn').click(function () {
var options= [];
$.each($checkboxes, function () {
if ($(this).is(':checked')) {
var item={ "UserChoice" : "checked", "OptionID": "YouCanSetIDHere"};
}
else
{
var item={ "UserChoice" : "unchecked", "OptionID": "YouCanSetIDHere"};
}
options.push(item);
}
$.ajax({ type: "POST", url: '@Url.Action("Edit","Attendance")',
contentType: "application/json",
data: JSON.stringify(options)
}).done(function (html) {
//do something with the response.
});
});
});
答案 0 :(得分:0)
您可以创建与您的viewmodel类似的项目,并将其推送到您的数组并使用jQuery post发布。在控制器操作中,您可以使用viewmodel的集合来接受它。 MVC模型绑定将负责其余部分。
假设你有一个像这样的ViewModel
public class UserOptionVM
{
public string OptionID{ set;get;}
public string UserChoice { set;get;}
}
在Action方法中,您接受此
的集合[HttpPost]
public ActionResult Save(List<UserOptionVM> model)
{
// loop through collection and read and save
}
现在更改您的Js文件以发送与我们的viewmodel匹配的内容。
var options= [];
$.each($checkboxes, function () {
if ($(this).is(':checked')) {
var item={ "UserChoice" : "checked", "OptionID": "YouCanSetIDHere"};
}
else
{
var item={ "UserChoice" : "unchecked", "OptionID": "YouCanSetIDHere"};
}
options.push(item);
});
$.ajax({ type: "POST",
url: "@Url.Action("Save","User")",
contentType: "application/json",
data: JSON.stringify(options)
}).done(function (html) {
//do something with the response.
});