miércoles, 12 de julio de 2017

System.InvalidOperationException: Sólo se puede agregar una instancia de ScriptManager a la página

Definitivamente solo puedes tener un scriptmanager, mi caso fue que tenia en la mayoria de las formas el objeto scriptmanager para uso de complemento ajax, pero al incluir scriptmanager en el masterpage me dio el siguiente error:





 Si buscas en la web, al respuesta va a ser la misma, asi que desgaster tiempo SOLO UN SCRIPMANAGER.

Si quiería implementar ajax en el masterpage tenia que modifcar todas la formas para quitar el scriptmanager de cada una. Como era necesario esa era mi unica salida.

Pero gracias a los dioses de la programación encontre una solución, que al final quita el scriptmanager, pero desde la ejecucion de la forma.

Para hacer esto solo necesitamos agregar asp del master pager el scripmanager asociando el init del scriptmanager a un procedimiento que eliminara los scriptmanager de la pagina en ejecución, excluyendo al del masterpage.

Como ven el scriptmanager incluido en el materpage tiene el OnInit asociado  a la rutine ScriptManager1_Init que esta en el script.

ScriptManager1_Init tiene el codigo que busca dentro del conten los objeto de tipo ScriptManager y ToolkitScriptManager.  




Codigo en el masterpage
<body>
<form id="form1" runat="server">
  <asp:ToolkitScriptManager ID="ScriptManager1" runat="server"
       OnInit="ScriptManager1_Init" />         
    <script runat="server">  
      Protected Sub ScriptManager1_Init()
        Try
          For Each _ctrl As Control In ContentPlaceHolder1.Controls
           If _ctrl.GetType() = GetType(AjaxControlToolkit.ToolkitScriptManager)
              Or 
              _ctrl.GetType() = GetType(ScriptManager)
           Then
             ContentPlaceHolder1.Controls.Remove(_ctrl)
             Return
            End If
           Next
        Catch ex As Exception
        End Try
      End Sub
   </script> 


No hay comentarios:

Publicar un comentario