RequiredFieldValidator 失效?点击按钮后空文本框无提示信息
解决ASP.NET RequiredFieldValidator不显示提示的问题
你遇到的这个情况很常见,我帮你梳理几个最可能的原因和对应的解决办法:
1. 验证组(ValidationGroup)必须完全匹配
你的代码里给文本框和验证器都加了ValidationGroup="Email",但触发验证的按钮必须也设置相同的ValidationGroup属性,否则验证器根本不会被触发。比如你的按钮应该写成这样:
<asp:Button ID="SubmitButton" runat="server" Text="提交" ValidationGroup="Email" />
这是最容易忽略的点,很多时候都是因为按钮没同步设置验证组导致验证失效。
2. 确认验证器的基础配置没问题
- 你设置了
Display="Dynamic"是正确的,但要确保验证器本身没有被设置为Visible="false",也没有被父容器控件隐藏; - 检查
ControlToValidate属性是否准确指向你的文本框ID(也就是EAdd),拼写别出错; - 默认情况下
EnableClientScript="true"(客户端验证开启),如果手动改成了false,那只有回发服务器后才会触发验证,客户端点击按钮时不会即时显示提示。
3. 排查页面的JavaScript错误
有时候页面里其他的JS代码报错,会阻断ASP.NET自带的验证脚本执行。你可以按下F12打开浏览器开发者工具,切换到「控制台(Console)」标签,看看有没有红色的错误提示,先修复这些错误再测试验证功能。
给你一个可参考的完整示例
<div style="padding-top:5px"> <asp:Label Text="Enter Account Email Address" CssClass="required" runat="server" /> <asp:TextBox ID="EAdd" Width="300px" runat="server" ValidationGroup="Email"/> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="EAdd" ErrorMessage="This is a required field." Display="Dynamic" ValidationGroup="Email" ForeColor="Red"/> <!-- 按钮必须同步设置ValidationGroup --> <asp:Button ID="SubmitBtn" runat="server" Text="Submit" ValidationGroup="Email"/> </div>
先优先检查验证组的匹配问题,这大概率是解决你当前问题的关键。如果还是不行,再依次排查后面的几点。
内容的提问来源于stack exchange,提问作者StrawHatPancake
相关产品推荐
相关产品推荐

