2009-09-15 18 views
9

¿Es posible configurar el ClientID de cualquier control de servidor asp.net? ¿Cómo puedo hacer esto?Establecer ClientID en asp.net

+0

¿Por qué necesitas hacer eso? –

+1

Explique qué está tratando de lograr y, a continuación, tal vez podamos sugerir una alternativa. –

Respuesta

19

¡La buena noticia es que en VS 2010 .Net 4, tendrá complete control over Client IDs!

Todavía para las versiones actuales de .Net, puede hacerlo debido. Supongo que necesitas el ID para JavaScript. Si es así, acaba de obtener el ID de este modo:

<script type="text/javascript"> 
    var myTextBox = $('#<%=TextBox1.ClientID%>'); 
</script> 
+2

+1 por ser un Jedi y leer la mente de ebattulga, "Obtener ClientID I Do not Set" –

+2

No olvides poner el signo # delante del <% = pendiente de obtener el objeto DOM real y no solo el texto del ClientID del control. – KSwift87

+1

Thx @ Kswift87 eso es absolutamente correcto. He actualizado mi respuesta –

3

Eso no es posible. ClientID es generado por ASP.NET. De MSDN:

El valor ClientID es generada por concatenando el valor de ID del control y el valor de su control UniqueID padres. Si el valor de ID de no se especifica el control, se utiliza un valor generado automáticamente de .

1

Incluso creo que no es posible en Visual Studio 2008. Debido Control.ClientID propiedad sólo ha conseguir método

Editar: Pero en Visual Studio 2010 (.Net 4.0) es posible

+1

¿Cómo es posible? En VS2015 este método todavía es solo obtener. – FrenkyB

1

Ésta es una característica de ASP.NET 4.0.

3

Yo aconsejaría en contra de hacer esto a menos que esté seguro de que quiere hacerlo, pero hay un camino. Puede anular la propiedad ClientID desde el control del servidor.

public override string ClientID 
{ 
    get { return "whatever"; } 
} 

Pero, como han notado otros, no se puede hacer desde fuera.

1

ASP.NET 4 tiene la propiedad ClientIDMode en cada control para eso. Si desea apagar completamente ClientID puede utilizar this trick - que funciona para cualquier control no devolución de datos

0

Para VS 2010, .NET 4.0:

Si sólo intenta establecer ctrl.ClientID="stringID" obtendrá un error, diciendo que ClientID es de solo lectura. Se puede controlar el valor de ClientID usando ClientIDMode - que define el algoritmo con el que se establece ClientID:

ctrl.ID = "IDstring"; 
ctrl.ClientIDMode = ClientIDMode.Static; //ClientID value is set to the value of ID 

el código HTML marcará html de tu control con el ID del control. Por lo tanto, usted tiene cierto grado de control del código subyacente.

Cuestiones relacionadas