Caixa de seleção Asp.net e atributo de dados html

No asp.net, se você usar um atributo personalizado, normalmente ele será renderizado como está.

Considerando essa marcação (Nota: atributos comoid, name efor foram removidos em todos os exemplos, pois seus id / nomes gerados são verbosos):

<asp:TextBox runat="server" data-foo="bar" />

É processado em asp.net como:

<input type="text" data-foo="bar" />

Isto é, o asp.net mantémdata-foo intocado.

A caixa de seleção geralmente é renderizada assim:

<asp:CheckBox runat="server" Text="Normal" />

Processa como:

<input type="checkbox" />
<label>Normal</label>

Mas se você adicionar um atributo personalizado em uma caixa de seleção:

<asp:CheckBox runat="server" Text="Custom attribute" data-foo="bar"  />

Ele processa como:

<span data-foo="bar">
    <input type="checkbox" />
    <label>Custom attribute</label>
</span>

Como você pode ver, um intervalo é renderizado para conter o atributo. Isso também acontece se você adicionar o atributo no código por trás. Isso não acontece com nenhum outro HtmlControl, AFAIK.

Alguém sabe por que esse espaço é processado para manter o atributo?

Existe alguma maneira de renderizar o atributo na tag de entrada?

questionAnswers(4)

yourAnswerToTheQuestion