Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法加载C#web服务的JavaScript数组_Javascript_C#_Arrays_Angularjs_Asp.net Web Api2 - Fatal编程技术网

无法加载C#web服务的JavaScript数组

无法加载C#web服务的JavaScript数组,javascript,c#,arrays,angularjs,asp.net-web-api2,Javascript,C#,Arrays,Angularjs,Asp.net Web Api2,我的应用程序中有一个JavaScript对象,它有一个数组对象,在服务器端,它是一个具有两个属性(名称、值)的对象集合 我确信我在这里遗漏了一些简单的东西,因为我已经盯着它看太久了,但是当下面的代码将其发送到C#web服务时,CustomProperties对象作为4个对象的数组。但是,每个名称和值属性都是空的 myObject.CustomProperties = []; myObject.CustomProperties.push({ Name: "FirstName", Value: $

我的应用程序中有一个JavaScript对象,它有一个数组对象,在服务器端,它是一个具有两个属性(名称、值)的对象集合

我确信我在这里遗漏了一些简单的东西,因为我已经盯着它看太久了,但是当下面的代码将其发送到C#web服务时,CustomProperties对象作为4个对象的数组。但是,每个名称和值属性都是空的

myObject.CustomProperties = [];

myObject.CustomProperties.push({ Name: "FirstName", Value: $scope.userInfo.FirstName });
myObject.CustomProperties.push({ Name: "LastName", Value: $scope.userInfo.LastName });
myObject.CustomProperties.push({ Name: "Email", Value: $scope.userInfo.Email });
myObject.CustomProperties.push({ Name: "PortalId", Value: portalId });
我也试过这个

myObject.CustomProperties = [];

myObject.CustomProperties.push({ "Name": "FirstName", "Value": $scope.userInfo.FirstName });
myObject.CustomProperties.push({ "Name": "LastName", "Value": $scope.userInfo.LastName });
myObject.CustomProperties.push({ "Name": "Email", "Value": $scope.userInfo.Email });
myObject.CustomProperties.push({ "Name": "PortalId", "Value": portalId });
上述所有变量在调试器中都有值,但数组不能正确加载,因为web服务只显示空值

这是调用web服务的代码。不过,我已经删除了我认为不必要的部分

factory.callPostService("ActionName", myObject)
    .success(function (data) {
        // nothing in here happens
    })
    .error(function (data, status) {
    // this always occurs
        $scope.HasErrors = true;
        console.log("Unknown error occurred calling ActionName");
        console.log(data);
    });
我使用的服务器端代码看起来与我的其他类和属性几乎相同

下面是我的示例中myObject的属性

public List<CustomPropertyInfo> CustomProperties { get; set; }

导致此问题的原因是Json序列化程序不知道如何正确地反序列化集合。解决此问题的最简单方法是使用Json属性标记CustomPropertyInfo类,以告知Json.Net如何处理此对象。这消除了序列化/反序列化泛型列表所引起的任何混乱

[Serializable]
[JsonObject(MemberSerialization.OptIn)]
public class CustomPropertyInfo : ICustomPropertyInfo
{
    [JsonProperty("Name")]
    public string Name { get; set; }

    [JsonProperty("Value")]
    public string Value { get; set; }
}

我已按要求添加了一个额外的代码段。:)可以添加
$scope.userInfo
对象。declareuserInfo在以前的web服务调用中成功加载,然后在表单中更新。这些对象在web developer工具中显示其预期值您需要显示加载阵列服务器端的代码/注释。客户端代码正确地生成了一个至少包含给定名称的数组,因此,如果服务器端的
Name
看到
null
,这就是服务器端的问题。服务器端,对象的其余部分似乎序列化得很好,而这个特定对象只是一个对象列表。我已经更新了我的问题,以显示该属性和对象。
[Serializable]
[JsonObject(MemberSerialization.OptIn)]
public class CustomPropertyInfo : ICustomPropertyInfo
{
    [JsonProperty("Name")]
    public string Name { get; set; }

    [JsonProperty("Value")]
    public string Value { get; set; }
}