2010-12-06 29 views
1

Peut-être ma question précédente sur output caching la mise en cache de sortie était trop complexe.ASP.Net Final Rendering Page Événement

Simplifions-nous. Comment puis-je obtenir le code HTML final prêt à l'envoi à partir d'un événement de page (ou de contrôle) dans ASP.Net? Je suppose que ce sera le même contenu qui sera utilisé pour le cache de sortie, donc pourrait être interrogé pour savoir ce qui est sur le point d'être placé dans le cache.

+0

voudrais comprendre quel est l'objectif? –

+0

Salut Madhur, J'essaie d '«examiner» ce qui va entrer dans le cache de sortie AVANT qu'il n'entre, car une fois dans un grand moment le site met en cache une page partielle invalide. Je voudrais mettre en cache ceci avant que cela arrive. – Flipster

Répondre

1

code copié à partir de: http://aspcode.net/Last-second-HTML-changes-in-your-ASPNET-page.aspx

protected override void Render(HtmlTextWriter writer) 
{ 
    using(System.IO.MemoryStream msOur = new System.IO.MemoryStream()) 
    { 
     using(System.IO.StreamWriter swOur = new System.IO.StreamWriter(msOur)) 
     { 
      HtmlTextWriter ourWriter = new HtmlTextWriter(swOur); 
      base.Render(ourWriter); 
      ourWriter.Flush(); 
      msOur.Position = 0; 
      using(System.IO.StreamReader oReader = new System.IO.StreamReader(msOur)) 
      { 
       string sTxt = oReader.ReadToEnd();      
       Response.Write(sTxt); 
       oReader.Close(); 
      } 
     } 
    } 
} 
+0

Cela n'attrape que les éléments rendus normalement et non Server.Execute ou d'autres instructions qui écrivent directement dans le flux Response.Out. – sisve

+0

Merci Madhur. Je ne suis pas sûr si le cache de sortie utilise directement la sortie de .Render, mais il semble être une avenue prometteuse à explorer. +1 et accepté – Flipster

+0

Mise à jour: Cela a fonctionné! Merci. – Flipster