我有以下功能signuture: public JsonResult PopulateGrid(int page, Guid? accountId, Guid? systemUserId, Guid? branchId, DateTime? fromDate, DateTime? toDate, HomeVisitType? homeVisitType) 每个参数都绑定得很好,除了toDate,结果
public JsonResult PopulateGrid(int page, Guid? accountId, Guid? systemUserId, Guid? branchId, DateTime? fromDate, DateTime? toDate, HomeVisitType? homeVisitType)
每个参数都绑定得很好,除了toDate,结果总是为null.
检查Request.QueryString [“toDate”]时,它会检索正确的值,即30/09/2010.
似乎DateTime在绑定时需要另一种格式.
什么是正确的格式?
我已经将我的应用程序中的当前文化更改为使用DD / MM / YYYY的文化,它似乎没有任何效果.似乎与使用10,01而不是10.01的语言的十进制相同的问题…
从ASP.Net团队的开发人员处更新.
“这是故意的.任何属于URI的部分(注意URI中的”统一“)都被解释为它来自不变文化.这是美国用户复制链接并将其发送过来IM给英国的朋友可以确信他的朋友会看到完全相同的页面(例如,由于DateTime转换错误而导致的HTTP 500).通常,在RouteData或QueryString中传递的日期应该在格式化yyyy-mm-dd以便在不同文化中明确无误.
如果需要以文化感知方式解释QueryString或RouteData参数,请将其作为字符串拉入,然后手动将其转换为所需类型,并传入所需的文化. (DateTime.Parse具有允许您指定区域性的重载.)如果这样做,我建议还将所需的区域性作为QueryString或RouteData参数,以便URI的“Uniform”部分不会丢失,例如: URL看起来像……?culture = fr-fr& date = 01-10-1990.“