venerdì 26 ottobre 2007

Pagina caricata due volte

Mi è capitata una cosa stranissima: usando una gridview su una pagina asp.net mi sono accorto che quando la pagina veniva richiamata la sua esecuzione veniva ripetuta due volte. Andando a spulciare in quello che era il codice e facendo varie prove, mi sono accorto che inserendo nella griglia una immagine oppure un button immage, sia che sia in una TemplateColoumn o una ButtonColoumn nel debug veniva chiamato 2 volte il Page_load. Cosa stranissima!!! Trova cerca e ritrova su internet sono arrivato alla conclusione che non ero l'unico e non in un unico scenario: non solo succede per la gridview in queste condizioni, ma anche per altre configurazioni che non stiamo qui ad elencare. Per ovviare al problema, bisogna impostare la direttiva della pagina web AutoEventWireup su false.
<%@ Page Language="C#" MasterPageFile="~/MasterPage/Principal.master" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page"%>
Ora in C# questa direttiva per default viene settata su true, quindi bisogna stare attenti a questa cosa, se necessita di essere controllata. Il problema nasce infatti da questa direttiva che se impostata a true attiva automaticamente alcuni eventi: Come funziona AutoEventWireup se questi eventi non sono collegati a nessun evento (almeno da quello che ho capito io) scatenano un comportamento di default. Impostando la direttiva su false si evita questo problema.

Per maggiori informazioni sul problema cercare su google : asp.net page load twice problem.

Cito inolte questo articolo preso da ASPITALIA che parla "un pò male dell'AutoEventWireUp": AutoEventWireup: se lo conosci lo eviti

Nessun commento: