我将以下正则表达式设置为ValidationExpressionWeb表单中RegularExpressionValidator 的属性.当我在经过验证的控件中输入非法字符时,验证程序会检测到它并显示错误消息.
<appSettings>
<add key="categoryPattern" value="^[a-zA-Z0-9_+\-() ]{1,50}$" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我的验证员:
<asp:RegularExpressionValidator ValidationExpression="<%$ AppSettings:categoryPattern %>"
Run Code Online (Sandbox Code Playgroud)
我的服务器端验证:
Regex rex = new Regex(ConfigurationManager.AppSettings["categoryPattern"]);
if (!rex.Match(categoryName).Success)
{
throw new ArgumentException("CategoryName must match expression: " + rex);
Run Code Online (Sandbox Code Playgroud)
如您所见,客户端和服务器端应用了完全相同的模式.
但是,当我清除已验证的控件并提交一个空字符串时,验证器认为它没问题,并且我从服务器端验证中收到错误.除了违反RegularExpressionValidator的合同外,任何人都知道这里有什么问题吗?
Meh*_*ari 18
这是设计的.您还应该添加RequiredFieldValidator强制用户条目.RegularExpressionValidator假设空字段为有效(甚至不运行它们Regex).这背后的原因是,例如,您可能Email address 2在表单中有一个不需要的可选字段,但是如果输入了该字段,则它应该是有效的电子邮件地址.为了轻松实现这一点,其他验证器会忽略空字段,如果需要使它们需要,则只需添加另一个RequiredFieldValidator.
实际上,没有必要在服务器上手动重新验证.ASP.NET验证器还支持构建它的服务器端验证.你可以检查一下Page.IsValid房产.
| 归档时间: |
|
| 查看次数: |
9532 次 |
| 最近记录: |