gpt4 book ai didi

asp.net - RegularExpressionValidator 不检测空字符串

转载 作者:行者123 更新时间:2023-12-03 01:58:51 26 4
gpt4 key购买 nike

我将以下正则表达式设置为 Web 表单中 RegularExpressionValidator 的 ValidationExpression 属性。当我在已验证的控件中输入非法字符时,验证器会检测到它并显示错误消息。

<appSettings>
<add key="categoryPattern" value="^[a-zA-Z0-9_+\-() ]{1,50}$" />
</appSettings>

我的验证器:

<asp:RegularExpressionValidator ValidationExpression="<%$ AppSettings:categoryPattern %>"

我的服务器端验证:

Regex rex = new Regex(ConfigurationManager.AppSettings["categoryPattern"]);
if (!rex.Match(categoryName).Success)
{
throw new ArgumentException("CategoryName must match expression: " + rex);

如您所见,客户端和服务器端应用了完全相同的模式。

但是,当我清除已验证的控件并提交空字符串时,验证器认为它没问题,并且我从服务器端验证中收到错误。除了正则表达式验证器的契约(Contract)被破坏之外,有人知道这里出了什么问题吗?

最佳答案

这是设计使然。您还应该添加一个 RequiredFieldValidator 来强制用户输入。 RegularExpressionValidator 假定空字段有效(甚至不通过 Regex 运行它们)。其背后的原因是,例如,您的表单中可能有一个可选的电子邮件地址 2 字段,该字段不是必需的,但如果输入了该字段,则它应该是有效的电子邮件地址。为了轻松实现这一点,其他验证器会忽略空字段,如果您需要将它们设为必填字段,只需添加另一个 RequiredFieldValidator

事实上,没有必要在服务器上手动重新验证。 ASP.NET 验证器还支持它构建的服务器端验证。您只需检查 Page.IsValid 属性即可。

关于asp.net - RegularExpressionValidator 不检测空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com