【问题标题】:Why is the RequiredFieldValidator not reacting?为什么RequiredFieldValidator 没有反应?
【发布时间】:2026-01-29 21:50:01
【问题描述】:

我在 asp.net webforms 中构建了一个简单的联系表单。我填写了这些字段,单击提交,一切正常,几分钟后我收到了一封电子邮件。到目前为止一切正常。

但是将字段留空会引发异常,正如您所期望的那样,字符串 txtEmail 不能为空或类似的单词。所以我想我会添加一个“asp:RequiredFieldValidator”,但是现在当我点击提交时,什么也没有发生。 因此,在 Chrome 中,我检查了代码,发现验证器代码的样式设置为“显示:无”,本质上它们没有被触发,也没有显示警告。 我填写了字段并单击了提交,但什么也没发生。我重新加载了页面,填写了字段并单击了提交,但什么也没发生。 似乎包含 RequiredFieldValidator 正在阻止按钮上的 OnClick 操作。如果我删除它们,它可以正常工作。

有什么想法吗?

编辑:一些代码

<div class="form-group has-feedback">
<asp:Label ID="lblEmail" runat="server" AssociatedControlID="txtEmail" Text="Email" CssClass="col-sm-3 control-label"></asp:Label>
<div class="col-sm-6">
<asp:TextBox ID="txtEmail" CssClass="form-control" runat="server" placeholder="Email" TextMode="Email"></asp:TextBox>
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" Display="Dynamic" runat="server" ErrorMessage="Please enter your email" ControlToValidate="txtEmail" CssClass="text-danger">
</asp:RequiredFieldValidator>
</div>
<div class="row">
<div class="col-sm-offset-3 col-sm-6">
<asp:LinkButton ID="lnkSubmit" runat="server" OnClick="lnkSubmit_Click" CssClass="btn standard-hover-effect bg-red btn-lg btn-block">
<span class="text">Contact us <i class="fa fa-arrow-right"></i></span>
</asp:LinkButton>
</div>
</div>

点击事件——

protected void lnkSubmit_Click(object sender, EventArgs e)
    {
        MailMessage mm = new MailMessage(txtEmail.Text, "foo@bar.com");
        mm.Subject = "Feedback from website";
        mm.Body = "Email from " + txtYourName.Text + "<br /><br />" + txtMessage.Text;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "mail.domain.net";
        smtp.Send(mm);
        //panContact.Visible = false;
        panContactThanks.Visible = true;
    }

正如我所说,没有必填字段验证器,代码可以正常工作。如果我把它们放进去,表格就不起作用了。

【问题讨论】:

  • 您是否需要 requiredfield valitor?
  • 是的,以确保人们在填写联系表时输入姓名和电子邮件地址。我想我可以手动编写代码,但这不是RequiredFieldValidator 的重点吗?
  • 分享你的代码你如何应用 requiredfieldvalidator
  • 您也应该始终进行服务器端验证。即使你让验证器工作。 if (!string.IsNullOrEmpty(txtEmail.Text)) { //send mail }。如果您的页面某处出现 javascript 错误,可能会导致验证器无法正常工作。

标签: asp.net webforms onclick requiredfieldvalidator


【解决方案1】:

像这样的必填字段验证器用法

带有验证器的 Asp 文本框

     <asp:TextBox ID="txttitle" CssClass="form-control" 
MaxLength="15" runat="server"></asp:TextBox>

    <asp:RequiredFieldValidator runat="server" 
ControlToValidate="txttitle" CssClass="text-danger" ErrorMessage="The Title field is required." />

【讨论】:

  • 是的,差不多就是这样,加上 display="dynamic"。它以前在不同的页面上工作过。
【解决方案2】:

不查找...您确定“display:none”不是错误设置吗?我的回忆是显示类型是一个格式化属性,你在哪里设置静态/动态来保留空间或允许流动?也许通过将其设置为显示:无,您正在触发无效事件但只是没有看到它...尝试将其设置为“显示:静态”或“动态”

【讨论】:

  • 显示:渲染时不添加任何内容,因此在调用之前是不可见的。
【解决方案3】:

最后我选择了一个基于

的解决方法
if (string.IsNullOrEmpty(txtYourName.Text)) { //code }

不是我想要的解决方案,但可以解决问题

【讨论】: