【发布时间】:2012-05-31 01:56:05
【问题描述】:
我有一个实体框架 POCO,它的属性定义如下:
[RegularExpression(ValidationHelper.RegularExpressionForDateOnly)]
public virtual DateTime LastBuildDate { get; set; }
常量的定义如下:
public const String RegularExpressionForDateOnly =
@"^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$";
我从 OWASP 那里得到了那个正则表达式:https://www.owasp.org/index.php/OWASP_Validation_Regex_Repository
现在,在 MVC3 视图中,我有:
<tr>
<td class="editor-label">
@Html.LabelFor(model => model.LastBuildDate)
</td>
<td class="editor-field">
@Html.EditorFor(model => model.LastBuildDate)
@Html.ValidationMessageFor(model => model.LastBuildDate)
</td>
</tr>
当我尝试以“05/30/2012”或“5/30/2012”格式输入日期时,验证失败(客户端和服务器端)。如果我手动尝试该正则表达式,该正则表达式应该允许这些格式。但是,当 MVC3 视图使用它进行验证时,验证失败。
还有什么其他原因会导致 MVC 未能通过此正则表达式验证?
【问题讨论】:
标签: regex asp.net-mvc-3 entity-framework data-annotations