我在javascript中有一个数组,我需要将它转到我的c#webMethod。这样做的最佳方式是什么?
我的c#代码是这样的:
[WebMethod]
public static void SaveView(string[] myArray, string[] filter)
{
}
编辑 -
我的json数据如下所示:
{"myArray":[{"name":"Title","index":"Title","hidden":false,"id":"1","sortable":true,"searchoptions":{"sopt":["cn","eq","bw","ew"]},"width":419,"title":true,"widthOrg":150,"resizable":true,"label":"Title","search":true,"stype":"text"},{"name":"Author","index":"Author","hidden":false,"id":"3","sortable":true,"searchoptions":{"sopt":["cn","eq","bw","ew"]},"width":419,"title":true,"widthOrg":150,"resizable":true,"label":"Author","search":true,"stype":"text"}]}
但我不工作......任何想法为什么?
非常感谢。
答案 0 :(得分:17)
您可以将其作为JSON字符串发送。这是一个使用jQuery的例子:
var array = [ 'foo', 'bar', 'baz' ];
$.ajax({
url: '/foo.aspx/SaveView',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ myArray: array }),
success: function(result) {
}
});
如果您的Page Method返回了某些内容,您应该使用success回调中的result.d
属性来获取页面方法调用的结果。
如果您不使用jQuery,则必须手动考虑发送AJAX请求时的浏览器差异。但为了实现这一点,请求中包含两个重要的事项:
application/json
{ myArray: [ 'foo', 'bar', 'baz' ] }
更新:
现在您已经更新了问题,似乎您不再愿意发送字符串数组。因此,定义一个与您要发送的JSON结构相匹配的模型:
public class Model
{
public string Name { get; set; }
public string Index { get; set; }
public bool Hidden { get; set; }
public int Id { get; set; }
public bool Sortable { get; set; }
public SearchOption Searchoptions { get; set; }
public int Width { get; set; }
public bool Title { get; set; }
public int WidthOrg { get; set; }
public bool Resizable { get; set; }
public string Label { get; set; }
public bool Search { get; set; }
public string Stype { get; set; }
}
public class SearchOption
{
public string[] Sopt { get; set; }
}
然后:
[WebMethod]
public static void SaveView(Model[] myArray)
{
}
答案 1 :(得分:2)
var xhr = new XMLHttpRequest();
xhr.open("POST", "mypage/SaveView");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ myArray: someArray }));
答案 2 :(得分:0)
这在asp.net core 2.2中对我有用,我试图将对象数组从js发送到控制器。
JS Ajax函数-
url: '/UserManagement/Calender/CalendarPreview/',
data: { "list": AllSchedulesarr},
控制器-
CalendarPreview(List<CreateOrUpdateBookingSlotDtos> list)