如何访问MVC控制器中的JavaScript数组?
我在javascript中创建了一个数组。现在我想使用阵列控制器。目前我正在使用如何访问MVC控制器中的JavaScript数组?,javascript,asp.net-mvc-3,Javascript,Asp.net Mvc 3,我在javascript中创建了一个数组。现在我想使用阵列控制器。目前我正在使用FormCollection访问表单中的数据。有没有办法在FormCollection中访问我的javascript数组,或者作为Html.BeginForm()中的参数访问我的javascript数组 我试着用我在论坛上找到的一些例子写一篇JSON文章,但是控制器中的数组是空的。您能帮助我找到访问控制器中javascript数组的最佳方法吗 <script type="text/javascript">
FormCollection
访问表单中的数据。有没有办法在FormCollection
中访问我的javascript数组,或者作为Html.BeginForm()
中的参数访问我的javascript数组
我试着用我在论坛上找到的一些例子写一篇JSON文章,但是控制器中的数组是空的。您能帮助我找到访问控制器中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>
您可以创建与viewmodel相似的项,并将其推送到数组中,然后使用jQuery post发布。在控制器操作中,可以使用viewmodel的集合来接受它。MVC模型绑定将处理剩下的部分 假设您有这样一个ViewModel
public class UserOptionVM
{
public string OptionID{ set;get;}
public string UserChoice { set;get;}
}
在您的操作方法中,您接受以下内容的集合
[HttpPost]
public ActionResult Save(List<UserOptionVM> model)
{
// loop through collection and read and save
}
您的json帖子未包含在代码示例中。我似乎无法修复此处的一个小问题:.$。AJAX它应为“,”或“')”。我已经在我原来的帖子中添加了代码。。知道我做错了什么吗?@CloudyKooper:the
$。每个都没有正确关闭(})代码>)。我在回答中也解决了这个问题。
[HttpPost]
public ActionResult Save(List<UserOptionVM> model)
{
// loop through collection and read and save
}
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.
});