Che*_*ven 2 .net globalization server-side data-annotations
北美的日期格式为MM/dd/yyyy
我正在为澳大利亚的项目(asp.net MVC 2)工作,日期格式为d/MM/yyyy
在web.config我有
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-AU"
uiCulture="en-AU"
enableClientBasedCulture="true"
/>
Run Code Online (Sandbox Code Playgroud)
在视图.net中以正确的格式呈现日期 - "en-AU",但是当我在14/11/2011日期提交表单时,我的ModelState.IsValid等于False.
如何教授dataannoation以"en-AU"格式正确验证日期?
//更新
刚发现这个问题只与GET有关
using(Html.BeginForm("Search", "form", FormMethod.Post)) //Works
using(Html.BeginForm("Search", "form", FormMethod.Get)) //Does'n work
Run Code Online (Sandbox Code Playgroud)
**看起来它是一个.net bug !!!
我尝试了新的mvc2/3项目
当我使用GET时,mvc绑定不使用当前文化**
谢谢.
此行为是设计使然.当您执行GET请求时,它会将日期放在URL中.ASP.NET MVC假设URL中的日期是不变文化.
为什么?
好吧,假设我创建了以下URL:/ posts/01-11-2011 /并将其发送给您.这对你来说代表着什么?
那么它意味着在2011年1月11日向我展示帖子,因为这对我的文化有用.但是您的文化可能表示为2011年11月1日.URL应该唯一标识资源.相同的网址不应具有不同的含义,具体取决于谁在查看它.
所以我们决定我们的模型绑定器不会将值从URL转换为当前文化,但会转换表单帖子中的值.这对我们来说是有道理的,因为表格帖子不能被发送并且通常代表用户的输入.
| 归档时间: |
|
| 查看次数: |
848 次 |
| 最近记录: |