如何访问MVC控制器中的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">

我在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.
             });