kala-tamin How could I insert a string into the response stream anywhere I want?


How could I insert a string into the response stream anywhere I want?



There may be an easy way to do this but I can't see it...

I created a simple Http Module that starts a timer on the PreRequestHandler and stops the timer on the PostRequestHandler to calculate the time it took the page to load.

I then create some simple html and write my results to Response.Write. Since I'm doing this in the PostRequestHandler it's adding my results after the </html> tag. That's fine for testing but I need in a scenario where the page needs to validate.

I can't seem to figure out how I could manipulate the Response object to insert my results before the </body> tag. Response.Write and Response.Output.Write don't have that flexibility and I couldn't see a way to work with the Response as a string. Am I missing something easy?


How can I use partial views in ASP.NET?

1:

ASP.NET MVC 2 - Html.DropDownList not working in an AJAX form
To did this, you'd have to implement your own stream object and use this as a filter for your response.. Using Structuremap to manage ObjectContext Lifetime in ASP.NET MVC For isntance:. UrlRewriting from ASP.NET WebApplication to ASP.NET MVC WebApplication
public class TimerStream : Stream {     private Stream inner { receive ; set; }     private StringBuilder   responseHtml;      public TimerStream(Stream inputStream) {          inner = inputStream;          responseHtml = new StringBuilder();         // Setup your timer     }      /* Filter overrides should pass through to inner, all although  Write */     public override void Write(byte[] buffer, int offset, int count)     {         string bufferedHtml = System.Text.UTF8Encoding.UTF8.GetString (buffer, offset, count);         Regex endTag = new Regex ("</html>", RegexOptions.IgnoreCase);          if (!endTag.IsMatch (bufferedHtml))         {             responseHtml.Append(bufferedHtml);         }         else         {             // insert timer html into buffer, then... Localization with separate Language folders within Views            responseHtml.Append (bufferedHtml);             byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes (responseHtml.ToString ());                         inner.Write (data, 0, data.Length);                     }     } } 
Then, in your HttpModule, you'd add this to your BeginRequest:. How to create a reusable Asp.Net Mvc application?
// Change the Stream filter HttpResponse response = context.Response; response.Filter = new TimerStream(context.Response.Filter); 
Client Id for Property (ASP.Net MVC)

71 out of 100 based on 51 user ratings 401 reviews