【问题标题】:javascript : pass an array to WCF service (c#)javascript:将数组传递给 WCF 服务(c#)
【发布时间】:2014-06-17 14:40:43
【问题描述】:

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

【问题讨论】:

    标签: c# javascript jquery wcf


    【解决方案1】:

    我认为您还需要将 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.stringify。
    • 我可以将参数设置为IEnumerable&lt;T&gt;或任何其他接口或比List&lt;T&gt;更原始的class吗?
    【解决方案2】:

    好的,我自己找到了解决方案。我觉得写在这里比较贴切,希望可以帮助到其他人。

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

    var arrayjson = JSON.stringify(listoffice);
    

    然后将其传递给 WCF 服务:

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

    注意: JSON 对象现在是大多数现代网络浏览器(IE 8 及更高版本)的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-02
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 2013-02-03
      • 2010-11-08
      相关资源
      最近更新 更多