javascript:将数组传递给WCF服务(c#)

时间:2014-06-17 14:40:43

标签: c# javascript jquery wcf

我正在尝试将数组发送到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。我错过了什么吗?

2 个答案:

答案 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及以上版本)。