Jul 7

En ocasiones, cuando estás trabajando en Visual Web Developer 2008 con componentes ASP.NET de terceros (third party), notarás que no funciona el Intellisense y además el diseñador marca que tu componente no está definido. Este es un ejemplo de este problema con el componente FreeTextBox:

Component Not Declared

Noté que esto me pasaba por la siguiente razón:
Los archivos de mi aplicación están hosteados en un servidor (no en mi PC de desarrollo), por lo que creé una conexión a una unidad de red, asignándola a una letra. Es decir, había mapeado \\servidor\inetpub\wwwroot\proyecto a w:\proyecto. Al parecer si tienes tu servidor web de desarrollo corriendo en tu misma PC, lo anterior no ocurre, pero me parece que es muy probable que trabajes en una PC de desarrollo y accedas a un servidor de desarrollo mediante la red local donde están (y corren) los archivos de tu aplicación. Al menos es mi caso.

Para corregir esta situación tienes que agregar los DLLs del control en el GAC.

Deberás usar la utilidad gacutil.exe que viene en el SDK del .Net Framework 2. Si no lo tienes, descarga el SDK de aquí:
http://www.asp.net/Downloads/essential/

Coloca el componente (el DLL) en un fólder de la PC en la que usas Visual Web Developer 2008:
explorer.gif

Ahora abre una ventana de MS-DOS, cámbiate a la carpeta en la que tienes instalado el gacutil.exe y corre el comando:

gacutil -i nombredeldll.dll

Algo como esto:
Registrando el DLL en el GAC

Ahora reinicia Visual Web Developer, abre tu aplicación de nueva cuenta y mira como ya funciona el Intellisense y no aparece el error de que tu control no está declarado:
Intellisense funcionando

Espero que te sea de utilidad. :)

Actualización
Si necesitaras desinstalar la libreria del GAC, utiliza esta instrucción:
gacutil -u NombreDeLaLibreria
No escribas .dll
Por ejemplo:
gacutil -u FreeTextBox

May 22

Utilizando ASP.NET 3.5 y AJAX me encontré con la siguiente excepción:

Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.

sys.gif

Para solucionarlo simplemente agrega una sección triggers a tu updatepanel referenciando al botón que envía el formulario. Así:

ASP:
  1. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  2.    <Triggers>
  3.       <asp:PostBackTrigger ControlID="MiBoton" />
  4.    </Triggers>
  5.    <ContentTemplate>
  6.    ...tu contenido aquí...
  7.    </ContentTemplate>
  8. </asp:UpdatePanel>

Normalmente esto siempre funciona, pero si no, visita esta página que contiene toda la explicación completa y más opciones de resolución.

Ene 28

¿Estás buscando tu propio icono (indicador) de espera para Ajax?

Esta página es muy buena, te permite crear el tuyo personalizado con los colores que desees, tiene una amplia variedad y los diseños están atractivos. La salida es un gif animado que puedes descargar.

http://www.ajaxload.info/

Jun 7

Estoy trabajando con:
ASP.NET 2.0.50727
Extensiones Ajax 1.0

Puse un UpdatePanel que contiene campos que el usuario va a llenar. Puse controles de validación para asegurarme de que el usuario llena los campos. Los controles de validación funcionaban de una manera extraña, y además aparecía este error:

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

Estuve investigando y resulta ser que los controles de validación no funcionan dentro de un UpdatePanel. Encontrarás más información aquí:
http://forums.asp.net/t/1116324.aspx (lee el segundo post).

Lo bueno es que hay una manera de darle la vuelta a este problema.

La razón del problema y la solución se encuentra aquí:
http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx

Pero te la traduzco. :)

Tienes que bajarte estos archivos y ponerlos en el fólder bin de tu aplicación.

Después de eso, abre tu archivoweb.config y dentro de la sección Pages teclea lo siguiente:

XML:
  1. <tagMapping>
  2.         <add tagType="System.Web.UI.WebControls.CompareValidator"
  3.              mappedTagType="Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0"/>
  4.         <add tagType="System.Web.UI.WebControls.CustomValidator"
  5.              mappedTagType="Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0"/>
  6.         <add tagType="System.Web.UI.WebControls.RangeValidator"
  7.              mappedTagType="Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0"/>
  8.         <add tagType="System.Web.UI.WebControls.RegularExpressionValidator"
  9.              mappedTagType="Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0"/>
  10.         <add tagType="System.Web.UI.WebControls.RequiredFieldValidator"
  11.              mappedTagType="Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0"/>
  12.         <add tagType="System.Web.UI.WebControls.ValidationSummary"
  13.              mappedTagType="Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0"/>
  14.       </tagMapping>

Yo lo probé y funciona perfectamente!

Más adelante Microsoft sacará un parche para no tener que hacer este truco, así que si se te presenta este problema, te recomiendo primero bajarte la versión más nueva de ASP.NET y de las Extensiones de Ajax.

Jun 7

Si cuando intentas ver tu aplicación de Ajax en Internet Explorer te marca un error de JavaScript que dice:

'Sys.Debug.isDebug' es nulo o no es un objeto

En inglés:
'Sys.Debug.isDebug' is null or not an object

lo más probable es que no has instalado las últimas extensiones. Haz lo siguiente:

  1. Desinstala las Extensiones de Ajax
  2. Reinicia el IIS
  3. Descarga e instala las Extensiones de Ajax más nuevas de www.asp.net
  4. Reinicia el IIS

Todo debe funcionar después de estos pasos.

Si no es así, quizás debas revisar tu código ya que han habido algunos cambios a lo largo de la historia de Ajax.

May 31
Usando UpdatePanel con Triggers
icon1 Recursos Web | icon2 Ajax | icon4 05 31st, 2007| icon31 Comment »

Si estás usando en Ajax un UpdatePanel, es sencillo hacer que éste se actualize si colocas un botón dentro de él mismo, algo como:

ASP:
  1. <asp:UpdatePanel id="UpdatePanel1" runat="server">
  2.    <contenttemplate>
  3.       <asp:Button id="Buscar" runat="server" Text="Buscar"></asp:Button>
  4.       <asp:Label runat="server" Text="Label"></asp:Label>
  5.    </contenttemplate>
  6. </asp:UpdatePanel>

Sin embargo, ¿qué ocurre si el botón que debe desencadenar la actualización del UpdatePanel se encuentra fuera del mismo?

Entonces debes añadir un trigger al UpdatePanel para indicarle cuál o cuáles controles deben desencadenar su actualización. Hazlo así:

ASP:
  1. <asp:Button id="Buscar" runat="server" Text="Buscar"></asp:Button>
  2. <asp:UpdatePanel id="UpdatePanel1" runat="server">
  3.    <contenttemplate>
  4.       <asp:Label runat="server" Text="Label"></asp:Label>
  5.    </contenttemplate>
  6.    <triggers>
  7.       <asp:AsyncPostBackTrigger ControlID="Buscar" EventName="Click"></asp:AsyncPostBackTrigger>
  8.    </triggers>
  9. </asp:UpdatePanel>

May 21

Este es un ejemplo probado de un UpdatePanelAnimationExtender de Ajax.

Cuando el UpdatePanel ha sido actualizado este ejemplo hace un fade out y luego un fade in al contenido de un tag DIV.

Te servirá de base para experimentar.

VerPostal.aspx

ASP:
  1. <asp:ScriptManager id="ScriptManager1" runat="server"> </asp:ScriptManager>
  2.   <asp:UpdatePanel id="UpdatePanel1" runat="server">
  3.     <contenttemplate>
  4.       <DIV style="BACKGROUND-COLOR: silver">
  5.         <asp:Label id="Label1" runat="server" Text="Label"> </asp:Label>
  6.         <BR />
  7.         <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"> </asp:Button>
  8.         &nbsp;<BR />
  9.         <BR />
  10.         <BR />
  11.         <BR />
  12.         <BR />
  13.       </DIV>
  14.     </contenttemplate>
  15.   </asp:UpdatePanel>
  16.   <cc1:UpdatePanelAnimationExtender id="UpdatePanelAnimationExtender1" runat="server"
  17.         TargetControlID="UpdatePanel1">
  18.     <animations>
  19.       <OnUpdated>
  20.         <Sequence>
  21.           <FadeOut Duration=".2" Fps="30" />
  22.           <FadeIn Duration=".2" Fps="30" />
  23.         </Sequence>
  24.       </OnUpdated>
  25.     </animations>
  26.   </cc1:UpdatePanelAnimationExtender>

VerPostal.aspx.vb

VB.NET:
  1. Partial Class VerPostal
  2.     Inherits System.Web.UI.Page
  3.  
  4.     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  5.         Label1.Text = Now.ToString
  6.     End Sub
  7.  
  8. End Class

Más información:
http://ajax.asp.net/ajaxtoolkit/UpdatePanelAnimation/UpdatePanelAnimation.aspx