2009-11-16 2 views
5

Abbiamo hudrends di file ASPX e HTML nel nostro sito e vorremmo inserire un piccolo JavaScript alla fine di ogni file. Se volessi farlo usando e HttpModule (cercando di imparare qualcosa di nuovo), farebbe questo - ci sono dei problemi evidenti?ASP.NET: iniezione di contenuto in tutti i flussi di risposta

public void Init(HttpApplication context) 
{ 
    context.BeginRequest += new EventHandler(context_BeginRequest); 
} 

void context_BeginRequest(object sender, EventArgs e) 
{ 
    var context = HttpContext.Current; 

    if (!isAspxOrHtmlFile(context.Request.Path) 
    { 
     return; 
    } 

    var javascript = ... 

    using (var writer = new StringWriter()) 
    { 
     context.Server.Execute(context.Request.Path, writer); 
     context.Response.ContentType = "text/html"; 
     context.Response.Write(writer.GetStringBuilder().ToString() + javascript); 
    } 

    context.Response.End(); 
} 

risposta

4

Probabilmente sapete modo semplice per farlo è quello di utilizzare statici controlli utente personalizzati nei file pagina master sito web, proprio come ai vecchi SSI includere file, giusto?

Informazioni su HttpModule, è necessario conoscere il contenuto che non è HTML, ma sembra che lo si rimuova già utilizzando isAspxOrHtmlFile(). Sembra bene per me.

+1

Sì, sono sicuro che c'è un modo migliore per farlo, sto solo usando questo come esempio per familiarizzare con HttpModules. Grazie :) – JamesBrownIsDead