Sì, dai un'occhiata all'interfaccia IAttributeAccessor. l'oggetto UserControl ASP.NET implementa esplicitamente questa interfaccia. Ciò consente a qualsiasi attributo aggiunto direttamente al controllo nel markup di essere trasferito alla raccolta di attributi lato server.
Si noti che l'implementazione predefinita su UserControl non è sovrascrivibile, ma scrive e legge dalla sua raccolta di attributi interni.Per rendere questi attributi HTML nel controllo utente, fare qualcosa di simile nella marcatura:
<div runat="server" ID="pnlOutermostDiv">
// control markup goes here
</div>
poi nel code-behind del controllo utente fare qualcosa di simile:
protected override void OnPreRender(EventArgs e)
{
foreach (string key in Attributes.Keys)
{
pnlOutermostDiv.Attributes.Add(key, Attributes[key]);
}
base.OnPreRender(e);
}
Ora, quando si utilizza il controllo in questo modo:
<my:TextBox runat="server" extraproperty="extravalue" />
si renderà così:
<div id="ctl00_blablabla_blablabla" extraproperty="extravalue">
// rendered control HTML here
</div>
Che aspetto ha il tuo .ascx? –