Это сделано с помощью адаптеров. Вы создаете тот, который делает свое волшебство, и связывает его в файле браузера, содержащемся в App_Browsers.
Вот пример моего экспериментального App_Browsers / Default.browser
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlControl"
adapterType="App_Code.Adapters.HtmlControlAdapter" />
</controlAdapters>
</browser>
</browsers>
И мой адаптер ...
с использованием System.Web.UI;
использование System.Web.UI.Adapters;
using System.Web.UI;
using System.Web.UI.Adapters;
namespace App_Code.Adapters {
public class HtmlControlAdapter : ControlAdapter {
protected override void Render(HtmlTextWriter writer) {
writer.Write("<div style='background-color: #f00;'>");
base.Render(writer);
writer.Write("</div>");
}
}
}
Мой очень продвинутый адаптер с суперфрагментными способностями отображает div со встроенными стилями вокруг всех элементов управления, полученных из HtmlControl (html-теги с runat = "server", включая ). Ваш адаптер может подключиться к любому событию, вызванному элементом управления, поэтому это должно удовлетворить ваши потребности.