C# Json发布的数组具有空值

C# Json发布的数组具有空值,c#,asp.net-mvc,json,jquery,C#,Asp.net Mvc,Json,Jquery,我有下面的json对象,对不起图像 我的jquery代码如下所示 var data = { table: table, favour: $("[name='radFavour']:checked").val(), data: jsonObj }; $.ajax({ url: appDomain + "/Compare/Ajax_Update", type: "post", dataTy

我有下面的json对象,对不起图像

我的jquery代码如下所示

var data = {
    table: table,
    favour: $("[name='radFavour']:checked").val(),
    data: jsonObj
};

$.ajax({
    url: appDomain + "/Compare/Ajax_Update",
    type: "post",
    dataType: "json",
    data: data
});
c代码看起来像

[HttpPost]
public void Ajax_Update(CompareFVM fvm)
{
}
FVM包含一个用于table和forvorite的字符串,这两个属性的数据通过

对于“数据”,我在FVM中有以下内容:

public List<CompareItem> data { get; set; }
列表中有正确数量的元素,在本例中为两个,但每个元素都设置了null

因此,我要发回的数据不是通过数组元素传递的,而是通过单个字段传递的


有什么想法吗?

在ajax调用时,将objectname作为'fvm'传递(名称应与C#code参数匹配)。另外,请使用json.stringify(数据)检查传递json对象


ajax调用时,将objectname作为“fvm”传递(名称应与C#代码参数匹配)。另外,请使用json.stringify(数据)检查传递json对象


根据我过去所做的类似工作,我会这样构造您的代码:

// if your C# is
public void Ajax_Update(CompareFVM fvm) {
}

// then your ajax call should be along the lines of
$.ajax({
    data : {
        'data' : [
            { /* compareItem */ },
            { /* compareItem */ },
            // ...
        ]         
    }
})
问题是,你的C#端点需要一个对象,所以你应该给它一个JSON对象

如果你的C#类是

public class CompareFVM {
    public IList<CompareItem> data { get;set; }
}
其中
.data
将是
CompareItem
对象的数组

e、 g


根据我过去所做的类似工作,我会这样构造您的代码:

// if your C# is
public void Ajax_Update(CompareFVM fvm) {
}

// then your ajax call should be along the lines of
$.ajax({
    data : {
        'data' : [
            { /* compareItem */ },
            { /* compareItem */ },
            // ...
        ]         
    }
})
问题是,你的C#端点需要一个对象,所以你应该给它一个JSON对象

如果你的C#类是

public class CompareFVM {
    public IList<CompareItem> data { get;set; }
}
其中
.data
将是
CompareItem
对象的数组

e、 g


我试过List、IEnumerable和数组。我还尝试了JSON.stringify。没什么用我试过列表、IEnumerable和数组。我还尝试了JSON.stringify。无效所有名称都与正在传递的名称匹配。就像我说的,我在“数据”中传递两个对象。在C#end,我的FVM.data列表有两个对象。两者都包含默认值,而不是实际数据。所以它知道有两个对象,但映射出错了。我已经尝试了stringify,但也没有成功。我想这可以帮助您“您是否正在尝试进行跨域AJAX调用?意思是,您的服务不是托管在相同的web应用程序路径中?您的web服务必须支持方法注入才能执行JSONP”-那么这可以帮助你不确定你为什么要面对这个问题,我试过了,它对我有用。。对象具有简单的结构。代码:var composite={BoolValue:true,StringValue:“Hello”};$。ajax({type:“POST”,contentType:“application/json”,url:url,data:json.stringify(composite),datatype:“jsonp”,success:function(data){alert(json.stringify(data));},error:function(xhr,status,error){alert(json.stringify(xhr));});所有名称都与正在传递的名称匹配。就像我说的,我在“数据”中传递两个对象。在C#end,我的FVM.data列表有两个对象。两者都包含默认值,而不是实际数据。所以它知道有两个对象,但映射出错了。我已经尝试了stringify,但也没有成功。我想这可以帮助您“您是否正在尝试进行跨域AJAX调用?意思是,您的服务不是托管在相同的web应用程序路径中?您的web服务必须支持方法注入才能执行JSONP”-那么这可以帮助你不确定你为什么要面对这个问题,我试过了,它对我有用。。对象具有简单的结构。代码:var composite={BoolValue:true,StringValue:“Hello”};$。ajax({type:“POST”,contentType:“application/json”,url:url,data:json.stringify(composite),datatype:“jsonp”,success:function(data){alert(json.stringify(data));},error:function(xhr,status,error){alert(json.stringify(xhr));});我尝试过像这里一样硬编码数组数据,数组有正确的元素计数,但数据为空。我尝试过像这里一样硬编码数组数据,数组有正确的元素计数,但数据为空
{ 'data' : [] }
{ 
    'data' : [
        {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'},
        {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'}
    ]
}