none
Problema en master page RRS feed

  • Pregunta

  • Buenas tardes,

    He detectado un fallo en una master page propia de Sharepoint 2010 y no consigo resolverlo, tengo referencias a unos JS en la master y he visto que si los pongo con esta forma:

    <asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true">
    <Scripts>
    <asp:ScriptReference Path="<%$SPUrl:~/sitios/miportal/Style/jQuery/jquery.js%>">
    </asp:ScriptReference>
    <asp:ScriptReference Path="<%$SPUrl:~/sitios/miportal/Style/jQuery/menu.js%>">
    </asp:ScriptReference>
    </Scripts> 
    </asp:ScriptManager>
     

    En las páginas "normales" del portal funciona correctamente pero cuando entro en "Ver todo el contenido del sitio" no monta bien el menú y falla.

    En cambio si lo pongo de esta forma (que me gusta menos) no falla:

    <script type="text/javascript" src="/sitios/miportal/Style/jQuery/jquery.js"></script> 
    <script type="text/javascript" src="/sitios/miportal/Style/jQuery/menu.js"></script>

    Pero el peor problema es que en la carga de las páginas llamo a una función a través de:

    <script type="text/javascript">  $(document).ready(function () {    CargaElemento();  });   </script>

    Y como no encuentra su script registrado a través de ScriptManager, falla y me devuelve un error java sin cargar la master como debería.


    ¿Estoy haciendo algo mal?

    Gracias



    viernes, 14 de junio de 2013 11:40

Respuestas

  • Hola a todos,

    Al final el error era la mayor tontería que cabía imaginar y la solución estaba muy cerca:

    http://social.technet.microsoft.com/Forums/sharepoint/en-US/021c6c2d-4bdb-4e76-a48a-a51502fc809a/systemwebuiviewstateexception-invalid-viewstate

    Era tan simple como que al declarar un elemento de búsqueda propio fuera del ContentPlaceHolder de búsqueda propio de Sharepoint, cuando intentaba cargar la página después de intentar realizar el borrado de una columna, fallaba y como resultado obtenía ese error.

    La solución ha sido muy sencilla (después de pasarme días dándome cabezazos hasta que he dado con ello) y no es nada más que meter mi control de búsqueda personalizado dentro del ContentPlaceHolder de búsqueda de Sharepoint y todo arreglado.

    Muchas gracias de todos modos a todos por vuestras aportaciones y por echar una mano como siempre.

    • Marcado como respuesta redheart.net martes, 25 de junio de 2013 9:43
    martes, 25 de junio de 2013 9:41

Todas las respuestas

  • Hola redheart

    En este artículo se explica cómo usar ScriptManager http://labs.steveottenad.com/adding-javascript-to-sharepoint-2010-master-page/

    En cuanto a tu código que parece estar "bien", ten en cuenta que ScriptManager hace una carga completa creo que posterior al ready de jquery (lo que indicaría que no esté cargad), con lo que probaría a meter tu función en otro fichero de script y cargarlo después del script menu.js

    No obstante, no veo por qué no usar la inclusión estándar de los scripts, es totalmente adecuada si no van a ser muchos ficheros.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS), Developing ASP.NET MVC 4 Web Applications
    Twitter | @saintwukong

    viernes, 14 de junio de 2013 21:54
    Moderador
  • Hola de nuevo,

    Ya he probado a hacer todas las modificaciones que se me han ocurrido en master page (con la original no falla) y al revisar los logs he visto que me devuelve lo siguiente:

    06/21/2013 14:54:33.85                w3wp.exe (0x0C18)                                      0x2984  SharePoint Foundation                Runtime                                       tkau       Unexpected      System.Web.UI.ViewStateException: Invalid viewstate.    Client IP: 10.61.17.92   Port: 49846   User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3)   ViewState: /wEWCwK+346+BgKfy+PaBQKgy+PaBQKjmKrACAK+mOr/BALRnM1MAtGczUwCweq1yAUCpMvj2gUC05fFrgoC0OH0+wfbyWg7vOr0v1S9rCPDfm5Q3sl+nA==   Referer: http://nombre.interno.server.es:8000/_layouts/FldEdit.aspx?List=%7B61F2E068%2D8B66%2D4E42%2D8C9C%2D3DF852DCA3E9%7D&Field=Texto%5Fx0020%5Fen%5Fx0020%5Fgris   Path: /_layouts/mngfield.aspx              120eea66-5eae-4375-a9d1-b3e01443267e

    Por lo  que me está devolviendo un error de viewstate inválido

    ¿Alguna idea de por qué puede estar provocado?

    (he descartado que sea de las llamadas js porque sin ellas también tengo el mismo problema)

    viernes, 21 de junio de 2013 13:27
  • Pues entonces parece claro que a la MasterPage personalizada le falta algo que parece que tiene que ver con /_layouts/mngfield.aspx 

    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS), Developing ASP.NET MVC 4 Web Applications
    Twitter | @saintwukong

    viernes, 21 de junio de 2013 15:21
    Moderador
  • Hola,

    yo no utilizaría $(document).ready, SharePoint tiene una función específica para esto que es executeOrDelayUntilScriptLoaded

    http://msdn.microsoft.com/en-us/library/ff411788(v=office.14).aspx

    quedaría algo como esto

    ExecuteOrDelayUntilScriptLoaded(function () {
           alert("jQuery loaded!");
        }, "scriptondemand/jquery.min.js");
    


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server

    lunes, 24 de junio de 2013 6:57
  • Hola de nuevo,

    Ya he probado a hacer todas las modificaciones que se me han ocurrido en master page (con la original no falla) y al revisar los logs he visto que me devuelve lo siguiente:

    06/21/2013 14:54:33.85                w3wp.exe (0x0C18)                                      0x2984  SharePoint Foundation                Runtime                                       tkau       Unexpected      System.Web.UI.ViewStateException: Invalid viewstate.    Client IP: 10.61.17.92   Port: 49846   User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E; InfoPath.3)   ViewState: /wEWCwK+346+BgKfy+PaBQKgy+PaBQKjmKrACAK+mOr/BALRnM1MAtGczUwCweq1yAUCpMvj2gUC05fFrgoC0OH0+wfbyWg7vOr0v1S9rCPDfm5Q3sl+nA==   Referer: http://nombre.interno.server.es:8000/_layouts/FldEdit.aspx?List=%7B61F2E068%2D8B66%2D4E42%2D8C9C%2D3DF852DCA3E9%7D&Field=Texto%5Fx0020%5Fen%5Fx0020%5Fgris   Path: /_layouts/mngfield.aspx              120eea66-5eae-4375-a9d1-b3e01443267e

    Por lo  que me está devolviendo un error de viewstate inválido

    ¿Alguna idea de por qué puede estar provocado?

    (he descartado que sea de las llamadas js porque sin ellas también tengo el mismo problema)

    hola,tienes habilitado el viewstate en tu masterpage?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 24 de junio de 2013 10:10
  • Puedes revisar este link

    http://support.microsoft.com/kb/555353?wa=wsignin1.0

    y este http://support.microsoft.com/kb/829743


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 24 de junio de 2013 10:11
  • Hola a todos,

    Al final el error era la mayor tontería que cabía imaginar y la solución estaba muy cerca:

    http://social.technet.microsoft.com/Forums/sharepoint/en-US/021c6c2d-4bdb-4e76-a48a-a51502fc809a/systemwebuiviewstateexception-invalid-viewstate

    Era tan simple como que al declarar un elemento de búsqueda propio fuera del ContentPlaceHolder de búsqueda propio de Sharepoint, cuando intentaba cargar la página después de intentar realizar el borrado de una columna, fallaba y como resultado obtenía ese error.

    La solución ha sido muy sencilla (después de pasarme días dándome cabezazos hasta que he dado con ello) y no es nada más que meter mi control de búsqueda personalizado dentro del ContentPlaceHolder de búsqueda de Sharepoint y todo arreglado.

    Muchas gracias de todos modos a todos por vuestras aportaciones y por echar una mano como siempre.

    • Marcado como respuesta redheart.net martes, 25 de junio de 2013 9:43
    martes, 25 de junio de 2013 9:41
  • Hola,

    yo no utilizaría $(document).ready, SharePoint tiene una función específica para esto que es executeOrDelayUntilScriptLoaded

    http://msdn.microsoft.com/en-us/library/ff411788(v=office.14).aspx

    quedaría algo como esto

    ExecuteOrDelayUntilScriptLoaded(function () {
           alert("jQuery loaded!");
        }, "scriptondemand/jquery.min.js");


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server

    Gracias por la sugerencia Alberto, aunque al final eso no era lo que daba el error en mi caso intentaré ponerlo así para hacerlo de la manera correcta.

    martes, 25 de junio de 2013 9:42