我正在尝试将数组发送到wcf服务。
我的javascript:
var listoffice = new Array();
var office1 = { officeid : "1", officename : "Bat Cave" };
var office2 = { officeid : "2", officename : "Robin House" };
listoffice[0] = office1;
listoffice[1] = office2;
$.getJSON("ContactService.svc/createnewAwesomeoffice", { listoffice: listoffice }, function (data) {
...
});
这是服务:
public struct officetoadd
{
public string officeid;
public string officename;
}
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public void createnewAwesomeoffice(List<officetoadd> listoffice)
{
...
}
问题是listoffice(在服务中)始终为null。我错过了什么吗?
答案 0 :(得分:2)
我认为您需要在您的WebGetAttribute中添加RequestFormat ...此外,您可能想尝试转换&#34; officetoadd&#34;进入一个类并用DataContract和DataMember属性装饰它。
[DataContract]
public class officetoadd
{
[DataMember]
public string officeid;
[DataMember]
public string officename;
}
[OperationContract]
[WebGet(RequestFormat - WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public void createnewAwesomeoffice(List<officetoadd> listoffice)
{
...
}
答案 1 :(得分:1)
好的,我自己找到了解决方案。我认为在这里写它是相关的,所以它可以帮助其他人。
我只需要将我的数组转换为JSON:
var arrayjson = JSON.stringify(listoffice);
然后将其传递给WCF服务:
$.getJSON("ContactService.svc/createnewAwesomeoffice", { listoffice: arrayjson }, function (data) {
...
});
注意: JSON对象现在是大多数现代网络浏览器的一部分(IE 8及以上版本)。