0

ビューモデルによって入力されたチェックボックスリストを取得しました。チェックボックス要素でidとvalueを指定します。これらの情報をデータベースに保存する必要があります。現在、チェックボックスIDとチェックボックス値を取得し、それらをキーと値のペアに入れて、コントローラーにajax呼び出しを行う予定です。これを行うためのより良いアプローチはありますか(mvc)?どうしますか?ありがとう

私のコード:

見る

   <div class = "divSubject">
     @foreach (var item in Model.dictionarySubject)
            {
     <div>
           @Html.CheckBoxFor(model => item.Value, new { @id = item.Key.subjectID})
           @Html.DisplayFor(model => item.Key.subjectName)
    </div>

            }
   </div>

JQuery

 $("#btnSave").click(function () {
 var dict = []; // create an empty array
              $('.divSubject input[type=checkbox]').each(function () {
                  var id = $(this).attr('id')
                  dict.push({
                      key: id,
                      value: $(this).attr('checked')
                  });
                  alert(JSON.stringify(dict))
              });
}
4

2 に答える 2

1

DOM要素のIDにはいくつかの制限があります。たとえば、数字で始めることはできません。HTML5 data- *属性を使用して、このメタデータ情報を保持することをお勧めします。

@Html.CheckBoxFor(
    model => item.Value, 
    new { data_id = item.Key.subjectID }
)

次に、JavaScript内で:

$('.divSubject input[type=checkbox]').each(function () {
    var id = $(this).data('id')
    dict.push({
        key: id,
        value: $(this).attr('checked')
    });
    alert(JSON.stringify(dict))
});

それ以外は、コードは問題ないようです。

于 2013-02-06T15:59:52.440 に答える
1

コードは問題なく機能しますが、キーとブール値のペアを取得したいと思います。この場合、以下のコードを検討してください。

dict.push({
     key: id,
     value: !!$(this).attr('checked')
});

$(this).attr('checked')は、ブール値ではなく、「チェック済み」またはnullを返します。

于 2013-02-06T16:05:45.610 に答える