RegularExpressionValidator 有效,但 RequiredFieldValidator 无效

Posted

技术标签:

【中文标题】RegularExpressionValidator 有效,但 RequiredFieldValidator 无效【英文标题】:RegularExpressionValidator works but RequiredFieldValidator does not 【发布时间】:2017-01-08 20:10:33 【问题描述】:

我正在尝试在 asp.net 网络表单中为我的文本框设置 RegularExpressionValidator 和 RequiredFieldValidator。我的 RegularExpressionValidator 工作并给出错误消息,但是当我单击提交按钮时,我的 RequiredFieldValidator 不显示错误消息。我还尝试将 ValidationGroup 添加到我的文本框和按钮以及 RegularExpressionValidator 和 RequiredFieldValidator,但没有任何改变。你能帮我们解决一下吗? 顺便说一句,我已经添加了

<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    </appSettings>

到我的网络配置。谢谢。

<input type="text" id="user" placeholder="username" runat="server"/>
            <asp:RegularExpressionValidator  runat="server"  ErrorMessage="Username is not suitable" Display="Dynamic"
                 ValidationExpression="^([a-zA-Z0-9]0,8)$" ID="req1"
                ForeColor="Red" ControlToValidate="user" />
            <asp:RequiredFieldValidator runat="server" Display="Dynamic" ErrorMessage="Username required" ID="req2"
                ForeColor="Red" ControlToValidate="user"/>
 <button id="submitbtn" type="button" runat="server">Sign up</button>  

【问题讨论】:

尝试使用 html 5 必需属性。 【参考方案1】:

哥们,你打错字了,输入必须提交

<button id="submitbtn" type="submit" runat="server">Sign up</button>

Type="submit" 会将页面发送回服务器,而 type 不会将页面发送到服务器。

另一种方法是使用 Page.isValid 属性。

【讨论】:

【参考方案2】:

试试这个

Username: <input type="text" id="user" name="usrname" required>
<input type="submit" id="submitbtn" type="button" runat="server"/>
        <asp:RegularExpressionValidator  runat="server"  ErrorMessage="Username is not suitable" Display="Dynamic"
             ValidationExpression="^([a-zA-Z0-9]0,8)$" ID="req1"
            ForeColor="Red" ControlToValidate="user" />
        <asp:RequiredFieldValidator runat="server" Display="Dynamic" ErrorMessage="Username required" ID="req2"
            ForeColor="Red" ControlToValidate="user"/>

【讨论】:

你可以去掉 type="button"【参考方案3】:

您可以通过为按钮添加“onclick”事件处理程序来解决此问题,如下所示:

<button id="submitbtn" type="button" runat="server" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$MainContent$submitbtn&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))">Sign up</button>

或 使用 Asp.Net 按钮控件,它将具有由 Asp.Net 呈现的 onclick 处理程序。 &lt;asp:Button ID="submitbtn" Text="Sign up" runat="server" /&gt;

似乎只有在调用 'WebForm_DoPostBackWithOptions' 函数时,才会触发验证。

【讨论】:

以上是关于RegularExpressionValidator 有效,但 RequiredFieldValidator 无效的主要内容,如果未能解决你的问题,请参考以下文章