首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP MVC 2:正则表达式属性在客户端工作,但不在服务器端工作

ASP MVC 2:正则表达式属性在客户端工作,但不在服务器端工作
EN

Stack Overflow用户
提问于 2010-05-02 23:06:18
回答 3查看 10.6K关注 0票数 1
代码语言:javascript
运行
复制
[Required(ErrorMessage = "Date is required")]
[RegularExpression(@"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((1[6-9]|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$", ErrorMessage="Date is not valid must be like (dd/mm/jjjj)")]
public DateTime Startdate{ get; set;}

客户端验证可以完美地工作。因此,看起来JavaScript可以成功地理解我的正则表达式。但当我回发时,modelstate.Isvalid()会被调用。

我的约会不再有效了。所以我猜测当.NET使用regEx执行匹配时,它并不匹配。

我的问题是:为什么这个正则表达式在客户端匹配,而在服务器端不匹配?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-02 23:50:07

这是因为当您执行回发数据绑定时,它无法将值解析为DateTime。顺便说一句,将RegularExpression属性放在DateTime类上并不是一个好主意。它有以下代码

代码语言:javascript
运行
复制
public override bool IsValid(object value)
{
    string str = Convert.ToString(value, CultureInfo.CurrentCulture);
    if (string.IsNullOrEmpty(str))
    {
        return true;
    }
    Match match = this.Regex.Match(str);
    return ((match.Success && (match.Index == 0)) && (match.Length == str.Length));
}

因此Convert.ToString(value,CultureInfo.CurrentCulture)永远不会与您的正则表达式匹配,因为它也会有时间部分。

你最好使用字符串而不是日期时间。

票数 2
EN

Stack Overflow用户

发布于 2010-05-02 23:47:06

我认为如果你想检查正则表达式,你应该使用:

代码语言:javascript
运行
复制
public string Startdate{ get; set;}

然后在模型绑定后,在服务器端将其转换为DateTime。您知道日期必须以特定的格式提供,但模型绑定器并不那么智能,并且会抛出错误。如果模型绑定后有DateTime,那么使用正则表达式检查它是没有意义的,不是吗?首先是模型绑定,然后是验证。

票数 0
EN

Stack Overflow用户

发布于 2010-05-02 23:47:34

有没有可能客户端验证规则实际上并没有被应用?您是否检查了所需的属性是否按预期工作?您应该能够使用firebug来双重检查服务器端的正则表达式是否相同,所有值是否都符合预期,等等。

此外,也可能是插入的值通过了正则表达式,但模型绑定器仍然无法将其转换为日期时间,这也会产生模型错误。

我还没有检查您的正则表达式,看看它到底做了什么,但是如果您试图验证输入的日期是否有效,请改用DataTypeAttribute

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2753864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档