var checkedValues = $('.required:checked').map(function () {
return this.value;
}).get();
$.getJSON('@Url.Action("testcata", "home")' +"?Type=" + "@(Session["typ"])" + "&city=" + "@(Session["cit"])" + "&chkd=" + checkedValues,
function (data) {
//code
})
在控制器中:
public ActionResult testcata(string Type, int? city, int[] chkd)
{
//code
}
我正在尝试获取检查框的值以通过json函数。 为什么控制器中的方法将null作为多个选定检查值的参数?我在函数中有一个int [] chkd参数。它显示为null。
答案 0 :(得分:1)
您正在尝试将数组作为字符串。试试这个:
var checkedValues = encodeURIComponent($('.required:checked').map(function(){
return this.value;
}).get().join());
答案 1 :(得分:1)
请先将您的方法从GET转到POST,然后按照以下代码进行操作。
您现有的代码
var checkedValues = $('.required:checked').map(function () {
return this.value;
}).get();
要添加的新代码
var Data = new Object();
Data.Type = @(Session["typ"]);
Data.city = @(Session["cit"]);
Data.chkd = checkedValues;
$.ajax({
type: "POST",
url: "/home/testcata",
data: JSON.stringify(Data),
dataType: "json"
}).done(function(data){
// Required Code
});
C#代码更改
public class Data
{
string Type {get; set ;};
int city {get; set ;};
int[] chkd {get; set ;};
}
public ActionResult testcata(Data data)
{
String Type = data.Type;
int city = data.city;
int[] chkd = data.chkd; // Your Array will be successfully received here.
}
希望这会对你有所帮助,谢谢:) Happy Coding
答案 2 :(得分:0)
这是对代码的重新安排。
var checkedValues = $('.required:checked').map(function () {
return this.value;
}).get();
//if you are getting correct values here than,
$.ajax({
type: "POST",
url: "/home/testcata",
data: JSON.stringify({chkd: checkedvalues}),
dataType: "json"
}).done(function(data){
// your stuff
});
如果可能,使用[HttpPost]
装饰您的控制器方法。尽管如此,与JSON
数据进行通信仍然非常安全。 :)