2017-07-04 81 views
0

我在mvc 5中有一個checkboxlistfor控件,並且希望獲取選定的複選框的值,一旦我獲得值,然後發送ajax請求並按照id獲取數據,下面是 的引用鏈接,其中實現了類似的功能,在這裏他使用了「for循環」的多個複選框,並且我使用了checkboxlistfor,使用這個我無法獲得所選複選框的值。如何從checkboxlist中獲取checkboxlist的值在MVC中使用jquery ajax

https://forums.asp.net/t/2078931.aspx?How+to+get+data+from+checkbox+list+using+jquery+ajax+in+MVC+

下面是我使用綁定checkboxlistfor代碼

視圖

@Html.CheckBoxListFor(model => model.sbuIDs, 
         model => model.Availablesbu, 
         sb => sb.sbuID, 
         sb => sb.sbuName, 
         model => model.Selectedsbu, 
         htmlListInfo) 

控制器代碼

[HttpGet] 
public ActionResult AddUsers() 
{ 
    var Uvm = new UsersViewModel(); 

    var Selectedsbu = new List<sbu>(); 
    Uvm.Availablesbu = _User.Getallsbu(); 
    Uvm.Selectedsbu = Selectedsbu; 
    return View(Uvm); 
} 

public class sbu 
{ 
    public int UserID { get; set; } 
    public int sbuID { get; set; } 
    public string sbuName { get; set; } 
} 

public class UsersViewModel() 
{ 
    public IEnumerable<sbu> sbu = null; 
    sbu = new List<sbu>(); 
    public IEnumerable<sbu> Availablesbu { get; set; } 
    public IEnumerable<sbu> Selectedsbu { get; set; } 
    public string[] sbuIDs { get; set; } 
} 

更新代碼

下面是Ajax請求,我將使用:

<script> 
    $("#CheckBoxListFor").change(function() { 
     debugger; 
     var favorite = []; 
     $.each($("input[name='sbuIDs']:checked"), function() { 
      favorite.push($(this).val()); 
     }); 

     $.ajax({ 
      type: "POST", 
      dataType: "json", 
      contentType: "application/json", 
      url: '@Url.Action("Getvalues", "Home")', 

      data: JSON.stringify({ values: favorite }) 
     }); 

    }); 
</script> 

控制器代碼

public JsonResult Getvalues(string[] values) 
{ 
    // 
} 
+0

這裏的相關部分將轉到AJAX和您的複選框的實際HTML標記以及控制器的代碼接受AJAX調用。你能否把這個添加到你的問題中。 –

+0

我還沒有添加任何ajax調用,因爲我無法獲取所選擇的複選框的ID,如果我有一些如何讓checkboxlist內的複選框單擊事件獲取id的代碼然後我將處理ajax請求。 –

+0

我不熟悉CheckBoxListFor使用您傳遞的參數。渲染的html將有所幫助。 –

回答

0

以HTML格式呈現一個複選框名單將有一個共同的名字,但將有不同的ID作爲名稱,後跟一個-和一個標識索引的數字。

您可以使用jQuery來獲取選定的列表。

$('[name="checkBoxListName"]:checked'); 

得到他們的值的數組:

var values = $('[name="checkBoxListName"]:checked').get(); 

你的示例腳本應該進行一些小改動工作。 1)使用名稱選擇器作爲您的複選框將有不同的ID。 2)將代碼包裝在$(document).ready中。 3)只要發佈的原始對象,而不是一個串:

<script> 
$(document).ready(function() { 
    $("[name='checkBoxListName']).change(function() { 
     // code here. 
     data: { values: favorite } 
    }); 
}); 
</script> 
+0

Thakyou我會嘗試這個,並添加評論...看起來像它會幫助我.. –

+0

謝謝你的幫助 –

0

下面是AJAX請求我有使用

<script> 
          $("#CheckBoxListFor").change(function() { 
           debugger; 
           var favorite = []; 
           $.each($("input[name='sbuIDs']:checked"), function() { 
            favorite.push($(this).val()); 
           }); 

           $.ajax({ 
            type: "POST", 
            dataType: "json", 
            contentType: "application/json", 
            url: '@Url.Action("Getvalues", "Home")', 

            data: JSON.stringify({ values: favorite }) 
           }); 

          }); 



         </script> 

控制器代碼

public JsonResult Getvalues(string[] values) 
    { 

.... }

+0

我把代碼移到你的問題,並在我的答案中修改。 –

相關問題