Я написал собственный элемент управления ASP.net, который происходит от LinkButton и переопределяет метод Render (). Я использую его для замены кнопок ImageButton на сайте, над которым я работаю, поэтому нам не нужно иметь изображение для каждой кнопки.
Этот элемент управления работает нормально, выполняет необходимые постбэки и т. Д., Однако он не запускает валидаторы в своей группе валидации. Это, очевидно, проблема.
Код для управления (сокращенно) выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public class CustomButton : LinkButton
{
public string SpanCssClass { get; set; }
protected override void Render(HtmlTextWriter writer)
{
if (!Visible)
{
return;
}
writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
writer.AddAttribute(HtmlTextWriterAttribute.Class, CssClass);
string postback = string.IsNullOrEmpty(OnClientClick) ? "javascript:__doPostBack('" + UniqueID + "','');" : OnClientClick;
writer.AddAttribute(HtmlTextWriterAttribute.Href, postback);
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.AddAttribute(HtmlTextWriterAttribute.Class, SpanCssClass);
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.Write(Text);
writer.RenderEndTag();
writer.RenderEndTag();
}
}
Кто-нибудь знает, почему это не вызывает срабатывание валидаторов?
У меня сложилось впечатление, что если оставить все другие методы в LinkButton без изменений, все остальные функции останутся прежними!