[英]Get correct checkbox value when using razor asp.net mvc
我正在使用剃刀渲染表單。 我遍歷.control_group
體內的類.control_group
,並創建需要發送回控制器的對象。 我的表單具有復選框和隱藏的輸入值。 我現在面臨的問題是這個。 剃刀渲染的復選框元素有兩個輸入,一個隱藏,而另一個顯示。 當我收集表單數據時,我總是得到最后一個輸入值(隱藏的值,並且始終為false
)。如何獲得真實值?
當前發送到控制器的數據(一切為假):
{"ajaxData":[{"Id":"1","RoleId":"1","R":"false","W":"false","E":"false","D":"false"},{"Id":"2","RoleId":"2","R":"false","W":"false","E":"false","D":"false"}]}
收集這樣的數據(在SO上發現類似的問題):
var ajaxData = $('.control_group').map(function (i, group) {
var data = {};
$(group).find(':input').each(function () {
data[this.name] = this.value;
});
return data;
}).get();
ajaxData = JSON.stringify({ 'ajaxData': ajaxData });
console.log(ajaxData);
控制器看起來像這樣:
public void SendData(List<SomeClass> ajaxData)
{
var data = ajaxData;
}
public class SomeClass
{
public int Id { get; set; }
public int RoleId { get; set; }
public bool R { get; set; }
public bool W { get; set; }
public bool E { get; set; }
public bool D { get; set; }
}
它是設計使然 ,您可以在此處閱讀有關內容: asp.net mvc:為什么Html.CheckBox會生成其他隱藏輸入
我可以建議您在迭代元素時執行以下操作
如果表單中有另一個具有相同名稱的元素,並且不是復選框,請跳過它。
這樣,您就可以收集正確的字段。
我絕對可以確定您可以使用JQUERY處理此問題,如果沒有,請發布JSFIDDLE,以便我們為您提供幫助。
剃刀語法始終為單選按鈕和復選框創建一個隱藏字段。 您可以將:input
選擇器更改為:input:checkbox
來執行任務。
var ajaxData = $('.control_group').map(function (i, group) {
var data = {};
$(group).find(':input:checkbox').each(function () {
data[this.name] = this.value;
});
return data;
}).get();
ajaxData = JSON.stringify({ 'ajaxData': ajaxData });
console.log(ajaxData);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.