我在
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","id":"3","label":"Author","stype":"text"}]}
但我不工作……任何想法为什么?
非常感谢你.
解决方法
您可以将其作为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请求时的浏览器差异.但为了实现这一目标,请求中包含两个至关重要的事项:
> Content-Type请求标头必须设置为application / json
>请求有效负载应为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) { }