【发布时间】:2011-07-08 19:23:35
【问题描述】:
我已将 Action Filer 中的文化设置为
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
其中文化 = {fr-be} =>法国比利时。
仅供参考,此操作过滤器设置用户选择的文化。
其中一个 myAction 用户正在输入格式为 [dd/mm/yyyy] => 26/7/2011 的日期。 动作如下
public ActionResult RequestVacation(VacationRequest model)
{
if(ModelState.IsValid)
{
....
当我调试代码时 model.VacationDate 包含 01/01/0001 ;虽然应该是 2011 年 7 月 26 日 而 Form[VacationDate] 包含 26/07/2011 [这是 Fr-BE 甲酸盐] 而 ModelState.IsValid 为假;虽然它应该是真的,因为日期在 fr-be 格式中是正确的。 当我进一步挖掘但在视觉工作室检查当地人时 我找到了
this.ModelState[1].Culture = {en-US}
而我已经使用 actionFilter 设置了文化值,如上所述。 我的问题是如何设置 this.ModelState.Culture = {fr-be}?
【问题讨论】:
-
"当我调试代码模型时。VacationDate 包含 01/01/1900 ;虽然它应该是 7/26/2011" - 1900 年 1 月 1 日是 SQL Server 中的最小日期。虽然您没有提到您正在使用某种数据库,但似乎这个问题与 CultureInfo 无关。我会先尝试修复它,然后继续修复其他问题...
-
你猜对了,db 是 SQL Server。请考虑这条线。 “Form[VacationDate] 包含 26/07/2011 [这是 Fr-BE 甲酸盐] 而 ModelState.IsValid 是假的;虽然它应该是真的”。所以这里的问题是 requestSring 中存在日期,而在验证时,它没有被解析。
标签: asp.net-mvc validation globalization