我有这种结构的模型
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) {
}
});
chart-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,但在模型中它具有值。也简单地输入属性 - 变量在ajax调用期间具有值。
答案 0 :(得分:1)
我很确定如果您将模型重构为像这样的扁平模型,这将有效
public class VariantsByAgeFilterViewModel
{
public string Variant { get; set; }
public int? AgeFrom { get; set; }
public int? AgeTo { get; set; }
}
内部AddRouteValues使用RouteValueDictionary来解析对象。而且据我所知,它在解除嵌套类型和数组方面并不擅长。
希望它有所帮助!