2008-12-13 5 views
7

¿Puedo usar el panel de Actualización en la página maestra para envolver las páginas anidadas de modo que cuando se navega de una página al otro cliente solo obtenga una actualización parcial (MasterPage no se vuelva a cargar).¿Puedo usar UpdatePanel en MasterPage para envolver páginas anidadas?

Si es así - ¿cómo? ¿Acabo de poner un panel de actualización alrededor del ContentPlaceholder en la página maestra?

¡Cualquier ayuda apreciada!

Respuesta

15

no te aconsejo para envolver una página entera en un UpdatePanel, por las siguientes razones:

  • Si usted quiere que su sitio sea el índice por los motores de búsqueda, usted tendrá que pantalla su contenido en páginas separadas ... basta con tener una cadena de consulta diferente en cada sección de contenido. Esto es porque para los motores de búsqueda Content Is King y dado que los motores de búsqueda actualmente no pueden indexar los datos generados dinámicamente, no podrán indexar sus páginas.

  • Envolver páginas enteras en un Update Panel es muy peligroso debido a la enorme sobrecarga que se envía al servidor. Verá una disminución significativa en el rendimiento si lo hace. Leer this article para obtener más información sobre el tema

  • Debido a esta enorme sobrecarga, se sugiere utilizar los Update Panel a actualización sólo pequeñas secciones de la página web (como pequeños widgets de caja en el lateral, etc ...) y no secciones de contenido completo.

  • La envoltura de las secciones de contenido en un panel de actualización significa que tendrá que hacer un esfuerzo adicional para cambiar la URL manualmente (utilizando # anclajes) manualmente, y esto le permitirá a los usuarios usar el botón Atrás en su navegador para ir a la sección anterior del sitio. Al no tener la posibilidad de volver atrás en una página es muy molesto para los usuarios


He aquí un ejemplo que muestra el problema con UpdatePanel s.

El siguiente es el código de una simple página aspx con una etiqueta y un botón:

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<asp:UpdatePanel runat="server" ID="up1"> 
<ContentTemplate> 
    <asp:Label runat="server" ID="Label1" Text="Update Me!" /><br /> 
    <asp:Button runat="server" ID="Button1" 
    Text="Postback Update" OnClick="Button1_Click" /> 
</ContentTemplate> 
</asp:UpdatePanel> 

 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = DateTime.Now.ToLongDateString(); 
} 

Y la siguiente es una devolución de datos parciales que se hacen con el UpdatePanel cuando se hace clic en el botón (nótese la gran sobrecarga implicada):

                                    alt text http://encosia.com/blog/media/images/updatepanel-payload-response-sm.png

Como se puede ver, el servidor está enviando básicamente todos los elementos que están en el UpdatePanel de vuelta al cliente.


Por otro lado, aquí es un ejemplo que implica el uso ASP.Net Page Methods. Note la respuesta enviada desde el servidor de este tiempo (no UpdatePanels involucrados):

                                        alt text http://encosia.com/blog/media/images/json-payload-response.png

+0

tiene sentido - gracias – JohnIdol

+1

el artículo es muy int Teseting también - el problema es que la gente es floja :-) – JohnIdol

+1

Muy informativo. Tomó muchos artículos para comprender la sobrecarga involucrada con UpdatePanel. ¡¡¡Muchas gracias!!! – Nipuna

Cuestiones relacionadas