如何将$ .ajax中的int数组发送到c#mvc?
答案 0 :(得分:35)
$.ajax({
url: <Url of the action>,
type: "POST",
data: JSON.stringify([1,2,3]),
dataType: "json",
contentType: 'application/json; charset=utf-8'
});
并在行动中。
public ActionResult ReceiveIntArray(int[] ints)
{
...
}
mvc应该自动解析json。
答案 1 :(得分:2)
尝试this question的解决方案:
在进行get调用之前将
traditional
属性设置为true。即:jQuery.ajaxSettings.traditional = true $.get('/controller/MyAction', { vals: arrayOfValues }, function (data) { ... }
答案 2 :(得分:1)
最简单的方法是在GET请求中发送一个分隔符(可能的逗号)字符串列表作为参数,然后使用Sting.Split()
在C#MVC接收器上解析它们。
所以,例如
$.get("/path-to/receiver/", { myArray: myArray.toString() } );
然后,在服务器上,使用
string[] stringArray = Request.QueryString["myArray"].ToString().Split(',')
将值提取到字符串数组,然后Int32.TryParse
最终得到一个整数数组。
答案 3 :(得分:1)
我这样做的方式是使用简单的input:hidden
元素
<input type="hidden" name="elements" value='@String.Join(",", ViewBag.MyArray)' />
在JavaScript代码中,我将其作为字符串传递:
$.ajax({
type: "POST",
url: '/Controller/Method',
data:
{
recipients: $("input[name=elements]").val()
},
traditional: true,
success: updateSelected
});
最后我只是Split
这样的元素:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(string elements)
{
IList<long> selected = elements.Split<long>(',');
...
}
答案 4 :(得分:0)
试试这个解决方案:
var Array = [10, 20, 30];
$.ajax({
type: "Post",
datatype: "Json",
url: <Url of the action>,
data: JSON.stringify(Array),
contentType: 'application/json; charset=utf-8',
});