none
Probelmas con javascript en control de usuario RRS feed

  • Pregunta

  • Buenos días, estoy insertando codigo javascript en un control de usuario via codebehind (ya que así leí que era lo correcto ) en page load de la siguiente manera:

    protected void Page_Load(object sender, EventArgs e)
            {
      ScriptManager.RegisterClientScriptInclude(this, GetType(), "formatterScript", ResolveUrl("~/jquery/menu/modernizr.custom.js"));
                ScriptManager.RegisterClientScriptInclude(this, GetType(), "formatterScript", ResolveUrl("~/jquery/menu/classie.js"));
                ScriptManager.RegisterClientScriptInclude(this, GetType(), "formatterScript", ResolveUrl("~/jquery/menu/accion_menu.js"));
                Page.Header.Controls.Add(new System.Web.UI.LiteralControl("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/css/normalize.css") + "\" />"));
                Page.Header.Controls.Add(new System.Web.UI.LiteralControl("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/css/style1.css") + "\" />"));

    }

    El control de usuario lo inserto en todas las paginas ya que es para el menu principal de todo el sistema, la unica forma donde no esta insertado es en el login, pero  loguearme y  enviar a la siguiente pagina asp marca error en la pagina loguin hacienndo referencia a que no se encuentra el evento de uno de los scipts que cargo en page load, pero en login no los inserto y tampoco incrusto el control de usuario, es decir, no existe referencia en login sobre el control de usuario, el error lo marca en el archivo Login.aspx [dinamico], no se por que sucede esto


    lunes, 27 de abril de 2015 17:40

Respuestas

  • >>por que no es correcto usar controles de usuario para menus, encabezado y footer?

    porque los controles no fueron pensados para usarlo en el diseño del layout del sitio, para eso estan las master page

    a ver puedes clavar un clavo usando una pinza, si seguramente puedas, es la herramienta recomendada y correcta, no

    >>siempre los he usado asi, en que momento deben usarse?

    pues lo has realizado siempre de forma incorrecta, los controles son justamte eso un control para implementar una funcionalidad concreta no para definir el layout del sitio

    el menu si puede definirse como un control, pero solo eso

    la declaracion de los .js, .css deben estar en el master page

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 27 de abril de 2015 18:10

Todas las respuestas

  • hola

    pero no me cierra porque defines los .js y .css desde codigo dentro del control? no defines una master page ?

    porque si es asi es alli donde defines los <script> que referencian los .js

    >>el error lo marca en el archivo Login.aspx [dinamico],

    que error es el que marca ?  porque dices que este es dinamico?


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 27 de abril de 2015 17:44
  • No uso master page,este es el codigo del Login.aspx

    <%@Register TagPrefix="header" tagname="Header"  src="~/cu/header.ascx" %> 

    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
    <head>
       
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>SOFAP </title>

        <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
        <!--[if IE 6]><link rel="stylesheet" href="style.ie6.css" type="text/css" media="screen" /><![endif]-->
        <!--[if IE 7]><link rel="stylesheet" href="style.ie7.css" type="text/css" media="screen" /><![endif]-->

        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="script.js"></script>


        <style type="text/css">
            .auto-style1 {
                width: 207px;
            }
            .auto-style2 {
                width: 45px;
            }
        </style>    
    </head>
    <body onload="">
        <form id="form1" runat="server">
    <div id="art-page-background-glare">
            <div id="art-page-background-glare-image">
        <div id="art-main">
            <div class="art-sheet">
                <div class="art-sheet-tl"></div>
                <div class="art-sheet-tr"></div>
                <div class="art-sheet-bl"></div>
                <div class="art-sheet-br"></div>
                <div class="art-sheet-tc"></div>
                <div class="art-sheet-bc"></div>
                <div class="art-sheet-cl"></div>
                <div class="art-sheet-cr"></div>
                <div class="art-sheet-cc"></div>
                <div class="art-sheet-body">
                  

                    <header:Header id ="header" runat="server" />


                    <div class="art-nav">                    
                    <div class="l"></div>                   
                    <div class="r"></div>
                       
                    </div>
                    <div class="cleared">
                    </div>

                    <center>

                    <table style="width: 46%; font-size: 10pt;">
                        <tr>
                            <td>Usuario</td>
                            <td class="auto-style1">
                                <asp:TextBox ID="txt_usuario" runat="server" Height="20px" Width="189px" Font-Size="10pt" TabIndex="1"></asp:TextBox>
                            </td>
                            <td class="auto-style2">
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt_usuario" ErrorMessage="*" Font-Size="12pt"></asp:RequiredFieldValidator>
                            </td>
                            <td rowspan="2">
                                <asp:Button ID="b_ingresar" runat="server" CssClass="art-button" Text="Ingresar" OnClick="b_ingresar_Click" TabIndex="3" />
                            </td>
                        </tr>
                        <tr>
                            <td>Contraseña</td>
                            <td class="auto-style1">
                                <asp:TextBox ID="txt_contra" runat="server" Height="20px" Width="189px" Font-Size="10pt" TextMode="Password" TabIndex="2"></asp:TextBox>
                            </td>
                            <td class="auto-style2">
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txt_contra" ErrorMessage="*" Font-Size="12pt"></asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        </table>

                        </center>
                    
                    <div class="art-footer">
                        <div class="art-footer-t"></div>
                        <div class="art-footer-l"></div>
                        <div class="art-footer-b"></div>
                        <div class="art-footer-r"></div>
                        <div class="art-footer-body">
                            
                            <div class="art-footer-text">
                                
                            </div>
                    <div class="cleared"></div>
                        </div>
                    </div>
            <div class="cleared"></div>
                </div>
            </div>
            <div class="cleared"></div>
            <p class="art-page-footer"></p>
        </div>
            </div>
        </div>
        
        </form>
         
    </body>
    </html>

     

    y este otro el de la pagina a la que mando cuando el login es correcto 

    <%@Register TagPrefix="header" tagname="Header"  src="~/cu/header.ascx" %> 
    <%@Register TagPrefix="menu_header" tagname="Menu_Header"  src="~/cu/menu_header.ascx" %> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
    <head runat="server">
      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>SOFAP </title>

        <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
        <!--[if IE 6]><link rel="stylesheet" href="style.ie6.css" type="text/css" media="screen" /><![endif]-->
        <!--[if IE 7]><link rel="stylesheet" href="style.ie7.css" type="text/css" media="screen" /><![endif]-->

        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div id="art-page-background-glare">
            <div id="art-page-background-glare-image">
        <div id="art-main">
            <div class="art-sheet">
                <div class="art-sheet-tl"></div>
                <div class="art-sheet-tr"></div>
                <div class="art-sheet-bl"></div>
                <div class="art-sheet-br"></div>
                <div class="art-sheet-tc"></div>
                <div class="art-sheet-bc"></div>
                <div class="art-sheet-cl"></div>
                <div class="art-sheet-cr"></div>
                <div class="art-sheet-cc"></div>
                <div class="art-sheet-body">
                    
                     <header:Header id ="header" runat="server" />

                     <menu_header:Menu_Header ID="menu_header" runat="server" />
                    
                    <div class="cleared"></div>

                    <br />

                    <div class="art-footer">
                        <div class="art-footer-t"></div>
                        <div class="art-footer-l"></div>
                        <div class="art-footer-b"></div>
                        <div class="art-footer-r"></div>
                        <div class="art-footer-body">
                            
                            <div class="art-footer-text">
                               
                            </div>
                    <div class="cleared"></div>
                        </div>
                    </div>
            <div class="cleared"></div>
                </div>
            </div>
            <div class="cleared"></div>
            <p class="art-page-footer"></p>
        </div>
            </div>
        </div>  

        </form>
    </body>
    </html>

    Como veras en esta segunda pagina  si incrusto el control de suuario del menu (menu_header),

    pero al loguearme aparece el error de que no se encuentra le funcion "classie" en la forma del login.aspx, pero alli no mando llamar el contro l de usuario por lo tatno no deberia marcar error segun yo

    lunes, 27 de abril de 2015 17:50
  • hola

    >>No uso master page

    pero alli esta el problema, el diseño usando controles para el header es una pesima idea

    debes usar master page para definir el layout del sitio, estas usando los controles para algo que no debe usarse

    >>pero al loguearme aparece el error de que no se encuentra le funcion "classie" en la forma del login.aspx, pero alli no mando llamar el contro l de usuario por lo tatno no deberia marcar error segun yo

    cuando te refires al control de usuario apuntas al del menu o al header ? porque en el aspx del login si defines un user control con la linea

    <header:Header id ="header" runat="server" />

    que pasa si usas el developr tools del browser (accedes con F12), podrias analizar que .js esta queriendo cargar y donde lo busca

    entiendo que ese codigo del Page_load que muestras solo lo defines en el control del menu

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    lunes, 27 de abril de 2015 18:02
  • "Header", no solo contiene un banner de encabezado de la pagina, el control que contiene los scripts es el de Menu_header, una pregunta, por que no es correcto usar controles de usuario para menus, encabezado y footer? siempre los he usado asi, en que momento deben usarse?
    lunes, 27 de abril de 2015 18:05
  • >>por que no es correcto usar controles de usuario para menus, encabezado y footer?

    porque los controles no fueron pensados para usarlo en el diseño del layout del sitio, para eso estan las master page

    a ver puedes clavar un clavo usando una pinza, si seguramente puedas, es la herramienta recomendada y correcta, no

    >>siempre los he usado asi, en que momento deben usarse?

    pues lo has realizado siempre de forma incorrecta, los controles son justamte eso un control para implementar una funcionalidad concreta no para definir el layout del sitio

    el menu si puede definirse como un control, pero solo eso

    la declaracion de los .js, .css deben estar en el master page

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 27 de abril de 2015 18:10