asp.net-mvc-3 - 在. NET 3 ( 区域性) 中,ASP.NET 3通过URL将日期时间传递给控制器,从而产生错误

  显示原文与译文双语对照的内容
64 2

我的应用是在 web.config 中使用 pt br culture ( 日期为 dd-mm-yyyy ) 设置的:


<globalization enableClientBasedCulture="false" requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="iso-8859-15" responseHeaderEncoding="utf-8" resourceProviderFactoryType="string" enableBestFitResponseEncoding="true" culture="pt-BR" uiCulture="pt-BR"/>



在系统上创建的所有DateTime都是正确的格式,但我创建了一个控制器方法,如下所示:


public ActionResult Test(DateTime date)


{


}



在浏览器中直接调用该方法时,如果日期与葡萄牙语的格式相同,则传递 null,如下所示:


mysite/Test/?date=19/01/2012 => date = null in my controller



mysite/Test/?date=01/01/2012 => date is fine, but in US format (mm-dd-yyyy)



如何修复该问题,以接受我的日期格式?

时间: 原作者:

58 0

有一个缺省的模型活页夹,它不容易知道但一旦你知道,你不再犯同样的错误:

  • 使用POST请求时,默认模型绑定器使用区域性设置来分析日期。

  • 当使用get请求时,默认模型绑定器使用 CultureInfo.InvariantCulture 解析日期,并忽略当前的区域性设置。

由于使用in请求并将日期传递为查询字符串参数,因这里应当在url中使用不变区域性格式设置它。 将日期设置为查询字符串参数的正确方法是 yyyy-MM-dd

你可以看一下之后的博客,它更详细。

原作者:
125 0

作为一个与美国公司做大量工作的人,我有很多日期问题的经验。

我最好的建议是在传送时选择一个明确的格式。

 
dd-MMM-yyyy



 

 
yyyy-MM-dd



 

是安全的,并且将被 DateTime.Parse(obj) 成功解析。

如果更改日期格式不是一个选项,应该查看 DateTime.ParseExact,这样你就可以指定正确的格式字符串。

...