0

我在 javascript 中创建了一个数组。现在我想使用数组控制器。目前我正在使用FormCollection从表单访问数据。有没有办法访问我的javascript数组FormCollection或作为参数Html.BeginForm()

我尝试使用我在论坛上找到的一些示例来发布 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>

更新 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.
         });


        });

        });
4

1 回答 1

0

您可以创建类似于您的视图模型的项目并将其推送到您的数组并使用 jQuery post 发布。在您的控制器操作中,您可以使用视图模型的集合来接受它。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 文件以发送与我们的视图模型匹配的内容。

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.
             });
于 2013-03-29T14:23:44.113 回答