por Cesar Cassiano Schimanco

Forçar ID estático para toda a aplicação com .NET Framework 4

Sabemos que o .NET cria IDs muito estranhos após a compilação, e isso acaba atrapalhando na hora de usar o ID no javascript por exemplo.
Na versão 3.5 ou anterior do .NET Framework, podemos resgatar o ID utilizando o <%= txtNome.ClientID%>.
Mas com a chegada do .NET Framework 4 isso ficou um pouco mais simples, basta adicionar o ClientIDMode="Static" como no exemplo abaixo.

<asp:TextBox ID="txtNome" ClientIDMode="Static" runat="server" />

Resultado:

<input name="txtNome" type="text" id="txtNome" />


Para forçar ID estático para toda a aplicação é simples, basta adicionar apenas uma linha de código no web.config.

<?xml version="1.0"?>
<configuration>
   <system.web>
       <compilation targetFramework="4.0" debug="true"/>
       <pages clientIDMode="Static" ></pages>
   </system.web>
</configuration>

Mas cuidado, pois isso pode se tornar um problema quando formos utilizar um Repeater por exemplo, pois ele criará vários IDs iguais, veja no exemplo abaixo onde o repeater tem um TextBox que repete por 2 vezes.

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
       <asp:TextBox runat="server" id="txtNome" />
    </ItemTemplate>
</asp:Repeater>

O resultado são vários IDs iguais:

<input name="Repeater1$ctl00$txtNome" type="text" id="txtNome" />
<input name="Repeater1$ctl01$txtNome" type="text" id="txtNome" />

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...