Мне нужно применить класс CSS к недопустимым элементам управления в веб-форме. Я хотел бы сделать его повторно используемым классом. Это то, что я до сих пор:
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.FindControl (bv.ControlToValidate) всегда равен нулю.
Есть ли лучший способ сделать это?