Jquery Ajax获取模型属性为空

Jquery Ajax获取模型属性为空,jquery,ajax,asp.net-mvc,asp.net-mvc-4,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,我有这种结构的模型 public class VariantsByAgeFilterViewModel { public string Variant { get; set; } public AgeGroup agegroup1 { get; set; } } public class AgeGroup { public int? AgeFrom { get; set; } public int? AgeTo { get; s

我有这种结构的模型

public class VariantsByAgeFilterViewModel
{
    public string Variant { get; set; }
    public AgeGroup agegroup1 { get; set; }                 
}

public class AgeGroup
{
    public int? AgeFrom { get; set; }
    public int? AgeTo { get; set; }
}
并使用ajax调用

 $.ajax({
        url: $('.chart-container').data('chart-url'),
        type: 'GET',
        data: { chart: $("#chart").val() },
        dataType: 'JSON',
        success: function (result) {

        }
    });
图表url看起来是这样的:

@Url.Action(MVC.Reports.VariantByMaleFemaleResult_Chart().AddRouteValues(Model.FilterModel))
这是我的行动

[HttpGet]
public virtual JsonResult VariantByAgeGroupResult_Chart(VariantsByAgeFilterViewModel filterModel, VariantByMaleFemaleCharts chart, VariantsByMaleFemaleResultViewModel viewModel) {

    ChartDataModel model = new ChartDataModel();
    var agefrom = filterModel.agegroup1.AgeFrom ;

    return Json(new { data = model }, JsonRequestBehavior.AllowGet);
}

当ajax调用控制器操作并设置模型参数时,agegroup1属性为null,但在模型中它有值。另外,简单地键入属性-Variant在ajax调用过程中有价值。

如果您将模型重构为这样一个平面模型,我很确定这会起作用

public class VariantsByAgeFilterViewModel
{
    public string Variant { get; set; }
    public int? AgeFrom { get; set; }
    public int? AgeTo { get; set; }                
}
内部AddRouteValues使用RouteValueDictionary解析对象。据我记忆所及,它在解除嵌套类型和数组的绑定方面一点也不好


希望有帮助

请张贴您的行动