Tak, spójrz na interfejs IAttributeAccessor. obiekt ASP.NET UserControl jawnie implementuje ten interfejs. Dzięki temu wszelkie atrybuty dodane bezpośrednio do kontrolki w znacznikach zostaną przeniesione do kolekcji atrybutów po stronie serwera.
Należy zauważyć, że domyślna implementacja w UserControl nie jest możliwa do zastąpienia, ale zapisuje i odczytuje z kolekcji wewnętrznych atrybutów.Aby uczynić te atrybuty HTML w kontroli użytkownika, coś jak to zrobić w znacznikach:
<div runat="server" ID="pnlOutermostDiv">
// control markup goes here
</div>
następnie w opóźnieniem kodu kontroli użytkownika zrobić coś takiego:
protected override void OnPreRender(EventArgs e)
{
foreach (string key in Attributes.Keys)
{
pnlOutermostDiv.Attributes.Add(key, Attributes[key]);
}
base.OnPreRender(e);
}
Teraz kiedy używasz kontroli takiego:
<my:TextBox runat="server" extraproperty="extravalue" />
to uczyni tak:
<div id="ctl00_blablabla_blablabla" extraproperty="extravalue">
// rendered control HTML here
</div>
Jak wygląda twój plik .ascx? –