none
ASCX en WebSite problemas con Scripts dinámicos y Eventos del ASCX RRS feed

  • Pregunta

  • Hola a todos y gracias de antemano por la ayuda que me podáis prestar.

    Estoy realizando un evolutivo de una aplicación que está desarrollada como Sitio Web (WebSite) con VS2010 y en lenguaje VB.NET y Framework 4.0.

    He realizado un ascx (System.Web.UI.UserControl) en una aplicación "tonta de prueba" (con vs2013 y .NET 4.0, con una master.page con el asp:ScriptManager, una página y el ascx, tal y como está el sitio donde luego se tiene que usar) el cual realiza todo lo que me han pedido y funciona bien.

    El ascx tiene muchos scripts dinámicos registrados mediante:

          Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "JSsciptX", jsScriptX) 

          o

           Page.ClientScript.RegisterStartupScript(...)

    Hay que registrarlos dinámicamente, para que no cargue la página de js excesivamente hasta que no se necesiten y porque hay variables que recupero en el behind que luego las necesito usar en el js.

    Controlo si ya se han cargado los scripts anteriormente con:

          If Not Page.ClientScript.IsStartupScriptRegistered("JSminiapplet") Then

          ...

    Además de esto tiene varios eventos en el codebehind del ascx y un eventhandler que debe recibir la página donde va el ascx. Y hay unas cuantas operaciones que se realizan con jquery (ocultar/mostrar ventanas modales en función de ejecuciones del js, rellenar campos ocultos... y todo sin relizar un postback hasta el final).

    El objeto de usar el ascx, es porque luego hay que meterlo en la aplicación en cuestión, en muchas páginas y quieren que los cambios en el código sean mínimos, con lo que registrar un ascx, inicializarlo por un metodo específico y recibir el evento de finalización debería ser sencillo.

    Lo que se pretende es interconectar la web con un programa de escritorio mediante una llamada por socket (esto sólo tiene interés para que dejéis de pensar que estoy loco por usar un ascx, js, jquery, no usar el behind para ciertas operaciones y registrar las cosas dinámicamente).

    Como he dicho en la app de prueba funciona bien, pero cuando lo paso al WebSite, me he encontrado con estos problemas:

        - El ascx hay que cambiar el CodeBehind por CodeFile, sencillo de arreglar.

        - No se registran los scripts dinámicamente, por lo que la parte en cliente no se ejecuta. Problema gordo y que no soy capaz de solucionar. (también he probado con RegisterStartupScript y tampoco)

    EDITO: el problema con esto era que en la aplicación en la que lo he integrado había updatepanel, y entonces esta forma de registrar los scripts no vale, hay que usar: ScriptManager.RegisterClientScriptBlock o ScriptManager.RegisterStartupScript.

        - Los eventos no funcionan y no se desencadena el eventhandler, creo que viene porque no se realiza lo anterior, con lo que lel control no funciona decuadamente y entonces no termina realizando el ciclo de vida y llamando al postback final). Sigo teniendo este problema, por ejemplo el hacer un Me.Visible = True no funciona, no muestra el control.

    He comprobado que la ejecución y el ciclo de vida va por dónde debe y no entra varias veces sin venir a cuento ni cosas por el estilo.

    ¿A alguien se le ocurre que puede estar pasando? ¿alguien ha tenido un problema similar y me ayuda? ¿se me está pasando algo "de bulto o una tontería" que haya que configurar o meter en algún lado para que funcione el binomio website - ascx?

    Muchas gracias.

    un saludo, Héctor.


    • Editado sanmolhec miércoles, 10 de mayo de 2017 13:05 solventada una parte del problema
    • Cambiado Joyce_AC viernes, 16 de junio de 2017 16:13
    martes, 9 de mayo de 2017 14:45