代码之家  ›  专栏  ›  技术社区  ›  Kris B

将CSS类应用于Web窗体上的无效控件

  •  1
  • Kris B  · 技术社区  · 15 年前

    我需要将CSS类应用于Web窗体上的无效控件。我想让它成为一个可复苏的班级。这就是我目前为止所拥有的:

    public class Validation
    {
        public static void ApplyInvalidClass(Page page, string className)
        {
            foreach (System.Web.UI.WebControls.BaseValidator bv in page.Validators)
            {
                if (!bv.IsValid)
                {
                    Control ctrl = page.FindControl(bv.ControlToValidate);
    
                    if (ctrl != null)
                    {
                        if (ctrl is TextBox)
                        {
                            TextBox txt = ctrl as TextBox;
                            txt.CssClass = "invalid";
                        }
    
                        if (ctrl is DropDownList)
                        {
                            DropDownList ddl = ctrl as DropDownList;
                            ddl.CssClass = "invalid";
                        }
    
                        if (ctrl is CheckBox)
                        {
                            CheckBox cb = ctrl as CheckBox;
                            cb.CssClass = "invalid";
                        }
    
                        if (ctrl is HtmlGenericControl)
                        {
                            HtmlGenericControl html = ctrl as HtmlGenericControl;
                            html.Attributes.Add("class", className);
                        }
                    }
                }
            }
        }
    
    }
    

    问题是我在.NET用户控件上调用它,我猜是因为我正在传入page,page.findcontrol(bv.controltovalidate)始终为空。

    有更好的方法吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    Page.FindControl 不是递归的,它只搜索直接在控件集合中的内容。它将变为空,因为您要搜索的控件嵌套在UserControl中。

    您可以看到 recursive FindControl function here .