0

JavaScript内に配列を作成しました。次に、アレイ コントローラを使用します。現在FormCollection、フォームからデータにアクセスするために使用しています。javascript 配列に、FormCollectionまたはパラメータとしてアクセスする方法はあり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.
         });


        });

        });
4

1 に答える 1

0

ビューモデルに似たアイテムを作成し、それを配列にプッシュして、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 ファイルを変更します。

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 に答える