2013-02-06 37 views
0

我有一個複選框列表由我的viewmodel填充。我在複選框元素中指定了id和value。我需要將這些信息保存在數據庫中。目前,我有它,我把複選框的ID和複選框的價值,把他們在一個關鍵值對,我打算做一個AJAX調用我的控制器。有沒有更好的方法來做到這一點(mvc)?你會怎麼做? 感謝獲得複選框ID和價值從一個div列表並將其傳遞給控制器​​

我的代碼:

VIEW

<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)) 
       }); 
} 
+0

爲什麼不使用複選框的NAME屬性,該屬性是POST DATA的標準的一部分? –

回答

1

DOM元素的ID具有一定的侷限性。例如,它不能以數字開頭。

@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)) 
}); 

除了你的代碼似乎罰款我會怎麼使用HTML5數據 - *屬性來保存這些元數據信息推薦。

+0

標記爲答案。謝謝! –

1

你的代碼工作得很好,但我相信你想要使用鍵和布爾值對。在這種情況下,請考慮以下代碼:

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

$(this).attr('checked')將返回「checked」或null,而不是布爾值。

+0

感謝您的更正! –

相關問題