如果我有这样的控制器......
Public Function GetData(fromDate As Date, toDate As Date) As ActionResult
然后我的网址必须是英文(MM-DD-YYYY)... ...
... /的GetData FROM日期= 2014年2月27日&安培; TODATE = 2014年9月29日
但由于我的所有用户都是丹麦语(DD-MM-YYYY),这不会有用......
... /的GetData FROM日期= 27-2-2014&安培; TODATE = 29-2-2014
我可以告诉MVC期望丹麦语(DD-MM-YYYY)参数,还是我必须在发送到服务器之前将日期转换为客户端上的MM-DD-YYYY?
答案 0 :(得分:2)
如果您使用ISO 8601日期格式,那么您的绑定将适用于任何区域设置。
在VB.Net中,您可以使用字符串格式.ToString("s")
为您的网址创建参数。
在JavaScript中,您可以使用.toISOString()
功能为您的网址创建参数。
ISO 8601日期格式将绑定到控制器中的DateTimeOffset参数:
Public Function GetData(fromDate As DateTimeOffset, toDate As DateTimeOffset) As ActionResult
答案 1 :(得分:1)
MVC模型绑定考虑了当前文化(区域设置)。例如,您的用户使用da-DK
文化,您的应用程序(服务器)设置为en-US
文化。显然,两种文化之间的日期格式会有所不同。
一个简单的选项就是Web.config
下<system.web>
集
<globalization culture="da-DK" uiCulture="da-DK" />
这会全局配置您的应用程序以使用da-DK
文化。这样,您的控制器操作就会知道dd-MM-yyyy
格式的日期。
Scott Hanselman有一篇关于这个主题的好文章:Globalization, Internationalization and Localization ...
<强>更新强>
此答案仅对POSTed数据有效,但在MVC中,使用InvariantCulture
解析查询字符串。 InvariantCulture
&#39; ShortDatePattern
为MM/dd/yyyy
。
例如,以下查询字符串参数将全部解析为2014年1月7日:01/07/2014
,01-07-2014
,01.07.2014
。
此外,以下内容还将解析为2014年1月7日:2014/01/07
,2014-01-07
,2014.01.07
。
最后一个示例与ISO国际日期格式一致,此格式应用于查询字符串参数。