2012-02-18 11 views
5

Sto lavorando a un progetto in cui le prestazioni sono davvero importanti e vorrei disabilitare AutoEventWireup in modo permanente. Il problema è nel fatto che la pagina e le direttive di controllo sovrascrivono le impostazioni di web.config. Dal momento che ci saranno molti collaboratori su questo progetto sarà impossibile aspettarsi che tutti lo disabilitino durante la creazione di nuove pagine e controlli (ed è vero per impostazione predefinita). È possibile applicare in qualche modo questa regola?Disattiva permanentemente AutoEventWireup

Spero di risolvere questo in modo simile a quello che ho fatto con ViewState - impostando EnableViewState in modo errato a livello di codice nella pagina di base che tutte le nuove pagine ereditano. Ma sembra non ci sia equivalente per AutoEventWireup.

risposta

3

Override SupportAutoEvents

public class BasePage : System.Web.UI.Page 
{ 
    public BasePage() 
    { 
     this.Init += (_o, _e) => { 
      this.Load += (o, e) => { 
       Response.Write("in page handler"); 
      }; 
     }; 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     // this handler is NOT assigned to the Load event 
     Response.Write("assigned by ASP .Net handler");    
    } 
    protected sealed override bool SupportAutoEvents 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 
+0

Dalla documentazione: "Questa proprietà supporta l'infrastruttura .NET Framework e non è destinato ad essere utilizzato direttamente dal codice." Puoi spiegare cosa stai facendo? :) – IrishChieftain

+0

I ILSpy (http://wiki.sharpdevelop.net/ILSpy.ashx). –

+1

Eccellente! Questo è esattamente quello che stavo cercando. Grazie – loodakrawa

0

Crea il tuo set di controlli per ognuno dei riquadri che desideri disabilitare per queste proprietà. Quindi imposta i due controlli nelle versioni ereditate in sola lettura.