Да, взгляните на интерфейс IAttributeAccessor . объект ASP.NET UserControl явно реализует этот интерфейс. Это позволяет передавать любые атрибуты, добавленные непосредственно в элемент управления в разметке, в коллекцию атрибутов на стороне сервера.
Обратите внимание, что реализация по умолчанию в UserControl не может быть переопределена, но записывает и читает из своей коллекции внутренних атрибутов. Чтобы отобразить эти атрибуты в HTML в вашем пользовательском элементе управления, сделайте что-то подобное в разметке:
<div runat="server" ID="pnlOutermostDiv">
// control markup goes here
</div>
затем в программном обеспечении пользовательского элемента управления сделайте что-то вроде этого:
protected override void OnPreRender(EventArgs e)
{
foreach (string key in Attributes.Keys)
{
pnlOutermostDiv.Attributes.Add(key, Attributes[key]);
}
base.OnPreRender(e);
}
Теперь, когда вы используете элемент управления следующим образом:
<my:TextBox runat="server" extraproperty="extravalue" />
Будет отображаться так:
<div id="ctl00_blablabla_blablabla" extraproperty="extravalue">
// rendered control HTML here
</div>