2

我正在从 ASP.Net 页面调用 WCF 方法,但是当 WCF 尝试反序列化从 JavaScript 接收的 recordIds 参数时,我收到格式异常。

传递给 WCF 方法的第一个参数需要是 List 类型。我在使用 JSON.stringify 时做错了什么吗?

调用 WCF 的 Javascript 代码

       function Update() {
        var myarray1 = new Array();
        myarray1[0] = 1;
        myarray1[1] = 11;
        myarray1[2] = 14;
        WCFService1.AJAXEnabledService.BatchUpdateRecords(
          JSON.stringify({recordIDs: myarray1}) , "ddsd", "gggg", 
          updateGrid, OnError);
    }

上面的 JavaScript 调用的 WCF 方法

   [OperationContract]
    public bool BatchUpdateRecords(List<int> recordIds, string columnNameToUpdate, string columnValue)
    {

        DataTable tierIDsTable = new DataTable("RecordIds");
        tierIDsTable.Columns.Add(new DataColumn("Integer", typeof(Int32)));
        tierIDsTable.PrimaryKey = new DataColumn[] { tierIDsTable.Columns["TierId"] };

        foreach (int recordId in recordIds)
        {
            tierIDsTable.Rows.Add(recordId);
        }
        return true;
    }
4

2 回答 2

1

不是 100% 确定,但你试过吗?

WCFService1.AJAXEnabledService.BatchUpdateRecords(
    myarray1,
    "ddsd",
    "gggg",
    updateGrid, OnError);
于 2013-03-15T03:17:56.910 回答
1

问题(不知道您收到的错误)很可能是您尝试传入多个参数类型。WCF 通常不支持,而是需要一个对象。使用您的参数创建一个响应类并改用它。

public class ResponseObject 
{
    public List<int> recordIds { get; set; } 
    public string columnNameToUpdate { get; set; }
    public string columnValue { get; set; }
}

使用这个对象作为你的参数

public bool BatchUpdateRecords(ResponseObject responseObject) 
{...
于 2013-03-15T03:20:13.597 回答