【问题标题】:Why is ASP.Net validation only working partially?为什么 ASP.Net 验证只能部分工作?
【发布时间】:2012-12-12 16:58:13
【问题描述】:

我正在尝试使用带有 ASP 的 Visual Basic.Net 编写一个带有验证的表单。

我将 RegularExpressionValidator 放入表单字段中进行测试,并通过 Page_Load 函数中的 Visual Basic 代码分配属性,如下所示:

LoginID.ValidationExpression = "[\\s\\S]{0,3}"
LoginID.ErrorMessage = "Maximum 3 characters are allowed."

出于测试目的,我设置了最多三个字符。无论长度如何,该文本字段的输入都将失效,并且错误消息不会根据其库存值更新。

为什么会发生这种情况,我该如何解决?

编辑:

我的正则表达式工作得很好。我已经测试过了。一定是其他问题。

这里是大部分代码,供需要查看更多内容的人使用。除此之外,我没有看到任何其他相关内容:

<%-- ASP code %>
<th width="200"><span class="required">*</span>Create Login ID :</th>
     <td width="230" align="left"><asp:TextBox ID="txtLoginID" runat="server"          CssClass="inputbox" MaxLength="50"></asp:TextBox><br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="First" CssClass="ValueValidator" ControlToValidate="txtLoginID" Display="Dynamic" runat="server" ErrorMessage="<br>Please Enter LoginID"></asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="ValRegExLoginID" runat="server" ControlToValidate="txtLoginID" CssClass="ValueValidator" ErrorMessage="*"></asp:RegularExpressionValidator>

</td>

//Visual Basic Code
Protected Sub Page_Load(ByVal source As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not IsPostBack Then
    ValRegExLoginID.ValidationExpression = "[\\s\\S]{0, 3}"
    ValRegExLoginID.ErrorMessage = "Maximum 3 characters are allowed."
End If

End Sub

【问题讨论】:

  • 请向我们展示您的所有代码。即,将验证器链接到控件的代码在哪里?

标签: asp.net forms validation


【解决方案1】:

最多允许 3 个字符的正则表达式是:

^.{0,3}$

所以替换

LoginID.ValidationExpression = "[\\s\\S]{0,3}"

LoginID.ValidationExpression = "^.{0,3}$"

【讨论】:

  • 对于 RegexValidator,您不需要 ^$,它们是隐式的(匹配的部分必须是验证器成功的整个文本)。
  • 对不起,我在正则表达式验证器站点中检查了它。所以正确的语法是 LoginID.ValidationExpression = ".{0,3}" ???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2018-02-19
  • 2018-07-24
  • 2021-11-01
  • 2019-10-08
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多