如何在代码隐藏中获取验证程序的 controltovalidate 属性 ASP.NET

本文关键字:程序 controltovalidate 属性 NET ASP 验证 获取 代码 隐藏 | 更新日期: 2023-09-27 17:56:29

在我的页面的代码隐藏中,我创建了一个错误列表,而不是使用具有有限样式的验证摘要。

这是我为此使用的代码:

Panel_feedback.Controls.Add(new LiteralControl("<div class='alert alert-danger alert-dismissible fade in' role='alert'>"));
Panel_feedback.Controls.Add(new LiteralControl("<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>×</span></button>"));
Panel_feedback.Controls.Add(new LiteralControl("<h2>ERROR!</h2>"));
Panel_feedback.Controls.Add(new LiteralControl("<ul class='fa-ul'>"));
foreach (IValidator error in this.Validators)
  {
     if (!error.IsValid)
         Panel_feedback.Controls.Add(new LiteralControl("<li><i class='fa-li fa fa-times-circle'></i>" + error.ErrorMessage + "</li>"));
   }
Panel_feedback.Controls.Add(new LiteralControl("</ul>"));

似乎错误对象应该具有"controltovalidate"之类的属性,但事实并非如此。我想知道控件验证目标的原因是我想更改红色边框,以便用户看到哪个文本框是错误的。

这是我的一个验证器示例:

<asp:RequiredFieldValidator ID="RequiredFieldValidator_name" runat="server" ErrorMessage="Vul uw naam in" Display="none" ControlToValidate="TextBox_name"></asp:RequiredFieldValidator>

提前致谢

如何在代码隐藏中获取验证程序的 controltovalidate 属性 ASP.NET

尝试投射到BaseValidator而不是IValidator,这应该有更多详细信息满足您的需求。

请参阅 MSDN 文档

foreach (BaseValidator error in this.Validators)
{
    if (error.IsValid)
        continue;
    Panel_feedback.Controls.Add(new LiteralControl("<li><i class='fa-li fa fa-times-circle'></i>" + error.ErrorMessage + "</li>"));
    string failedControlID = error.ControlToValidate;
    // ...
}