2017-07-04 56 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

我把代码移到你的问题,并在我的答案中修改。 –

相关问题