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

本文关键字:数组 WCF 服务 一个 javascript | 更新日期: 2023-09-27 18:09:11

我正在尝试发送一个数组到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(在服务中)总是为空。我错过什么了吗?

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

我认为你需要把RequestFormat以及在你的WebGetAttribute…另外,你可能想尝试把"officetoadd"变成一个类,并用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)
{
   ...
}

好吧,我自己找到了解决办法。我认为把它写在这里是相关的,所以它可能会帮助其他人。

我只需要将数组转换为JSON:

var arrayjson = JSON.stringify(listoffice);

然后传递给WCF服务:

$.getJSON("ContactService.svc/createnewAwesomeoffice", { listoffice: arrayjson }, function (data) {
   ...           
});

注意: JSON对象现在是大多数现代web浏览器(IE 8 &上图)。