我有如下模型类:
public class HomeFilterModel {
public string CompanyName { get; set; }
public string Country { get; set; }
public DateRange Period { get; set; }
}
public class DateRange {
public DateTime? From { get; set; }
public DateTime? To { get; set; }
}
在客户端,收集的数据如下对象:
{
"CompanyName":"",
"Country":"Canada",
"Period":{
"from":"2018-08-05T04:00:00.000Z",
"to":"2018-08-09T04:00:00.000Z"
}
}
它通过 $.param 函数转换为查询字符串并添加到 URL。
?CompanyName=&Country=Canada&Period%5Bfrom%5D=2018-08-05T04%3A00%3A00.000Z&Period%5Bto%5D=2018-08-10T04%3A00%3A00.000Z
控制器动作如下:
[HttpGet]
public ActionResult Index(HomeFilterModel filter) {
return View(filter ?? new HomeFilterModel());
}
模型数据过滤器可以正确获取 CompanyName 和 Country 值,但 Period.From 和 Period.To 始终为 NULL。我想知道我是否必须专门为这个模型类定制 ModelBinder?或者我应该使用 $.param 以外的其他函数在 URL 中构造查询字符串?
更新:如果查询字符串更改为
?CompanyName=&Country=Canada&Period.from=2018-08-05T04%3A00%3A00.000Z&Period.to=2018-08-10T04%3A00%3A00.000Z
控制器动作可以正确获取所有数据。因此 Period[from] 默认模型绑定器是不可接受的,而 Period.from 是。
有人对此有最简单和最好的解决方案吗?