0

ビューの最後に、選択したチェックボックスの配列を作成する JavaScript があります。フォームを送信するボタンを使用すると、フォーム コレクションやその他のパラメーターにアクセスできます。クリック イベントを同じボタンにアタッチして Java スクリプトを実行すると、JavaScript のデータは送信されますが、フォーム コレクション パラメータは null になります。スクリプトからクリック機能を削除すると、スクリプト モデル パラメータは null になり、他のパラメータは問題ありません。

これが、スクリプト データがコントローラーに到達する方法です。

モデルを使用しています: namespace SchoolIn.ViewModels { public class EnrollmentOptionsVM {

  public virtual string OptionID{ set;get;}
   public virtual string UserChoice { set;get;}


     }
 }



 [HttpPost]
    public ActionResult Edit(int id, FormCollection formCollection, String[] options,     List<EnrollmentOptionsVM> model, String[] instructorString, String[] selectedteacher,string[]  selectedCourses, Student student, string course, Enrollment enrolls, Assignment assignment, String[]  searchString)



 <script type="text/javascript">
        var $checkboxes = $('input[type="checkbox"]');


        $(document).ready(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","Student")',
            contentType: 'application/json',
            data: JSON.stringify(options)
        }).done(function (html) {

         });

       alert('success')
        });



        </script>

そして、これが Edit Post の署名です。

 [HttpPost]
    public ActionResult Edit(int id, FormCollection formCollection, String[] options,   List<EnrollmentOptionsVM> model, String[] instructorString, String[] selectedteacher,string[] selectedCourses, Student student, string course, Enrollment enrolls, Assignment assignment, String[] searchString)

スクリプトに alert() を入れて、正常に実行されることを確認しました。クリック イベントでスクリプト コードをラップしないと、モデル値が null になるのはなぜですか?

4

2 に答える 2

0

何が起こっているかわかりました。私の Javascript と Razor は同じアクションに投稿しますが、それらのパラメーターは同じ投稿で同時に送信されません。これを解決するために、別のアクションを作成し、クリック機能を使用してイベントをトリガーしました。

于 2013-03-31T07:16:18.837 に答える