9 de diciembre de 2009

JavaScript IntelliSense en Controles de Usuario (.ascx)

Vamos a describir un pequeño truco que puedes utilizar cuando quieres tener JavaScript IntelliSense en un control de usuario (.ascx).

A menudo, al trabajar con controles de usuario, no se desea incluir bibliotecas JavaScript dentro del control, mas bien las colocamos en las páginas que contienen a estos controles. El problema, por supuesto, es que al hacerlo Visual Studio no tiene manera de saber que el control en el que trabajamos si tiene acceso a la biblioteca a través de la página donde esta contenido, y por ende no se proporciona IntelliSense JavaScript.

Nota: Problemática similar se nos presenta con hojas de estilos CSS que no tenemos referenciadas en el control de usuario y si en la página contenedora.

Una forma con la que podemos habilitarlo es mediante la adición del siguiente código al control de usuario, pero rodeándolo con un bloque del lado del servidor, el cual siempre se evalúa a falso en tiempo de ejecución:

<% if (false) { %>
  <script src="../Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<% } %>
O el siguiente código para la hoja de estilo CSS:
<% if (false) { %>
  <link href="../Estilos/Base.css" rel="stylesheet" type="text/css"/>
<% } %>

En tiempo de ejecución

ASP.NET nunca procesa esta secuencia (ya que se envuelve en un bloque que siempre es falso).

3 comentarios:

  1. Una ves mas me convenso de los grandes males tienen simples soluciones, esto es algo q me estaba sucediendo y no se me ocurria darle una solucion tan simple, en fin ...

    ResponderEliminar
  2. Hola, me alegro que te halla servido de ayuda, esa es la idea de este espacio. Si tienes alguna otra consulta no dudes en escribirme.

    Salu2,
    Derbis

    ResponderEliminar
  3. Hola Derbis, no sé si todavía tienes acceso a este blog (4 años después...), pero quiero consultarte cómo agrego un "tab" a un ascx?

    Resulta que tengo en un ascx un usuario ingresa unas horas asociadas a un proyecto que se toma de un dropdownlist y en otro ascx el mismo usuario selecciona el dropdownlist del proyecto e ingresa gastos.
    Mi objetivo es crear un solo dropdownlist para que el usuario a través de dos tabs: ingresar horas e ingresar gastos unifique ambos procesos. Resulta que el tab es un control jquery y no sé como meterlo en un ascx.

    ResponderEliminar