Skip to content

Javascript de un Web User Control: ¿Dónde debe ir?

by en 21 febrero, 2012

Los web user contronls nos abren un mundo de posibilidades para alivianar nuestra carga y reutilizar código lo más posible, sin embargo si no se estructuran como debe ser, implementarlos puede ser un pain in the ass

Un web user control consta de 3 partes: La interfaz, el code-behind y el javascript. La interfaz está dada por lo que nosotros definamos, controles html, controles asp o lo que estimemos conveniente, el code-behind controla el comportamiento y los datos y el javascript validaciones, manipulación del DOM o llamadas ajax.

Uno de los principales problemas al momento de escribir javascript en los web-user-controls es que escribimos el código directamente en nuestro user-control. Definiendo funciones y contaminando nuestro namespace global de javascript. Les pongo el siguiente escenario:

Supongamos un web-user-control que valida automáticamente un algoritmo vía javascript (ya sea con expresiones regulares o if/else) y supongamos que lo hace llamando una función definida en el mismo web-user-control llamada “validarFormulario()”. Ahora agreguemos 2 o 3 de estos controles en una misma página web: ¿Qué ocurre? ¡¡Estaríamos creando 2 o 3 funciones validarFormulario en nuestro namespace global de javascript!!

La manera correcta de hacer esto es enviando el javascript a un archivo aparte y registrarlo en la web si y solo si no ha sido registrado antes y para utilizar las funciones, les enviaremos los parámetros necesarios para su funcionamiento en vez de recuperar todos los valores desde el interior de la función.

Para registrar un archivo javascript desde el code-behind y que se incluya solo una vez, independiente de la cantidad de veces que tengamos un control en una página web es el siguiente código:

if (this.Page.ClientScript.IsClientScriptIncludeRegistered("MyWebControlJS.js") == false)
{
    this.Page.ClientScript.RegisterClientScriptInclude("MyWebControlJS.js", ResolveUrl("~/Pages/Controls/MyWebControlJS.js"));
}

From → ASP.NET, C#, JavaScript

2 comentarios
  1. jeancc permalink

    a ver….

    no sé si me equivoco, pero… ¿te falta un ! en el if ?

    un saludo.

  2. @jeancc
    Hola, no falta un !, el plugin de wordpress para ver el código fuente tapa esa parte del código. Para ver el código completo haz click en el botón ver fuente que aparece cuando hacer hover en código fuente. Es un ícono con los caracteres “”.

    Dice:
    if (this.Page.ClientScript.IsClientScriptIncludeRegistered(“MyWebControlJS.js”) == false)
    {
    this.Page.ClientScript.RegisterClientScriptInclude(“MyWebControlJS.js”, ResolveUrl(“~/Pages/Controls/MyWebControlJS.js”));
    }

    Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: