在ASP.NET MVC 3中以特定格式验证日期
我的ViewModel中有一个DateTime MyDate类型的属性.我想确保用户只在特定格式(dd.mm.yyyy)的文本框中输入Date部分,并尝试以下属性:
[DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode=true)] [RegularExpression(@"^(([0-2]d|[3][0-1]).([0]d|[1][0-2]).[2][0]d{2})$",ErrorMessage="Failed...")] public DateTime MyDate { get; set; } HttpPost的控制器操作签名如下所示: [HttpPost] public ActionResult Edit(int id,MyViewModel viewModel) { // MyViewModel contains the MyDate property ... // ... if (ModelState.IsValid) { // ... } // ... } 在Razor视图中,我尝试了以下两种方式: > @ Html.TextBoxFor(model => model.MyDate) 它不能按我的意愿工作.结果是: >客户端验证与两个Html帮助程序一样正常工作 问题: >我可以在不是字符串的属性上应用RegularExpressionAttribute吗?如果允许,如何在服务器端对Date字符串等非字符串属性评估reg ex?类似于MyDate.ToString()与reg ex相比? (它会解释验证失败,因为ToString将返回一个包含时间部分的字符串,该字符串不会传递正则表达式.) 解决方法
不要使用正则表达式来验证日期,它们只是被忽略.
文化差异可能是问题的根源.客户端验证使用浏览器的文化来验证日期.因此,例如,如果将其配置为en-US,则预期格式将为MM / dd / yyyy.如果您的服务器配置为使用fr-FR,则预期格式为dd / MM / yyyy. 您可以使用web.config中的 <globalization culture="auto" uiCulture="auto"/> Hanselman在ASP.NET MVC中有关于全球化和本地化的nice blog post. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – Asp.net MVC Site.master和Razor Switch
- aspx.cs页面中的ASP.NET Webmethod无法访问Page.Request对象
- asp.net – 如何在使用Html.TextAreaFor时更改字体和颜色?
- asp.net – 如何在web.config中加密连接
- xamarin – ASP.NET核心Web API与ASP.NET核心应用程序
- asp.net – 如何让Html.RenderAction在帖子上调用Get方法?
- ASP / C#会话变量 – 未将对象引用设置为对象的实例
- asp.net – Jquery datepicker弹出窗口在IE8的选择日期没有
- 使用ASP.NET MVC4 jquery/javascript捆绑
- asp.net core 系列 6 MVC框架路由(下)
- asp.net-core – 如何将POCO控制器作为控制器发现
- 将asp.net应用程序移植到天蓝色有多大挑战?
- asp.net-mvc-3 – 如何通过HTML类(Razor语法)在M
- asp.net-mvc – 通过programmming导入Ms Access数
- asp.net-core – 程序集中找不到入口点’Microso
- asp.net-mvc-5 – ASP.NET MVC 5 Identity 2 Pas
- asp.net-mvc – 如何传递列表从控制器到MVC 3中查
- Asp.net,在哪里存储登录用户的用户名?
- 通过ASP.Net确定Windows Server的运行时
- asp.net-mvc – 如何从ActionExecutingContext获