2010-07-21 17 views
8

¿Es posible establecer un ID específico en un control de servidor ASP.NET? Cada vez que asigno una identificación y ejecuto el formulario web, la identificación cambia.¿Cómo establecer un ID específico para los controles del servidor en un formulario web ASP.NET que utiliza una página maestra?

Por ejemplo:

<asp:TextBox ID="txtName" runat="server"></asp:TextBox> 

se traduce en lo siguiente:

<input id="ct100_ContentPlaceHolder1_txtName" type="text" /> 

Creo que esto se haga de mí utilizando páginas maestras, pero si es así, ¿cómo puede estar seguro de un control tendrá una cierta identificación (para propósitos de javascript). Puse la identificación generada automáticamente en mi javascript y está funcionando, pero preferiría haber usado la identificación que originalmente les asigné. es posible?

(Esto es para la versión: ASP.NET 3.5)

Respuesta

4

Esta es la forma en que los identificadores de controles web están en .NET antes de la versión 4.0. La versión 4.0 presenta ID de cliente, que puede leer acerca de here.

Puede usar algo como esto en sus JS:

var something = '<%= txtName.ClientID %>'; 
21

A partir de .NET 4 que tiene un mayor control sobre cómo los ID de cliente se parecen (see this post for details).

Para forzar una ID específica del lado del cliente, debe establecer el ClientIDMode en static. A continuación se rendirá un elemento <input> con id="txtName":

<asp:TextBox ID="txtName" ClientIDMode="static" runat="server"></asp:TextBox> 

Aunque si lo hace, usted tiene que asegurarse de que usted no tiene dos controles con los ID de cliente idénticos. Verifique el artículo vinculado arriba para otras opciones.

+0

Gran respuesta - gracias. – Stumblor

2

Puede usar la propiedad Control.ClientID en su código subyacente para obtener la identificación real una vez que se ha agregado al árbol de control.

Opción súper molesta hecha por las personas de asp.net webforms.

Cuestiones relacionadas