簡體   English   中英

使用razor asp.net mvc時獲取正確的復選框值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM