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解析对象。据我记忆所及,它在解除嵌套类型和数组的绑定方面一点也不好
希望有帮助 请张贴您的行动