Re: Modifying page output using Session data?
From: Hugo Wetterberg (hugo_at_wetterberg.com)
Date: 03/27/04
- Next message: JollyK: "Setting class property in web.config file"
- Previous message: Scott: "Re: Double open dialog when downloading Excel file from ASP.NET."
- In reply to: Al Cohen: "Modifying page output using Session data?"
- Next in thread: Al Cohen: "Re: Modifying page output using Session data?"
- Reply: Al Cohen: "Re: Modifying page output using Session data?"
- Messages sorted by: [ date ] [ thread ]
Date: Sat, 27 Mar 2004 18:27:16 +0100
One solution is to override the Render method and pass a html-writer
based on a memory stream to the base.Render method. Then you only have
to read the memory stream and replace whatever you want, no problems
with accessing the session either.
protected override void Render(HtmlTextWriter writer)
{
MemoryStream mem=new MemoryStream();
StreamWriter w=new StreamWriter(mem);
HtmlTextWriter htmlw=new HtmlTextWriter(w);
base.Render (htmlw);
htmlw.Flush();
mem.Position=0;
TextReader reader=new StreamReader(mem);
string output=reader.ReadToEnd();
writer.Write(output.Replace("${user}",(string)Session["username"]));
}
Cheers
Hugo
On Sat, 27 Mar 2004 11:20:02 -0500, Al Cohen
<amc79@no.junk.please.cornell.edu> wrote:
>I'm attempting to build a templating engine that will substitute the
>values of session variables for tags in a page before the page gets sent
>to the client. For example, the contents of Session["UserName"] would
>replace each instance of ${UserName} in the page just before the page is
>returned.
>
>In principle, this should be easy to do by hooking into one of the
>HttpApplication events that occurs after the request handler runs, but
>I'm having trouble figuring out exactly how. The problem is that to do
>this, I need to satisfy two conditions:
>1. I must have access to the Session
>2. I must be able to manipulate (i.e., random search, delete, and write)
>the page contents.
>
>It looks like I can only manipulate the page contents in a filter
>attached to HttpResponse.Response; otherwise, I can only append to the
>Response. (Is this true?)
>
>If I can only manipulate the page in a filter, that would be OK, as long
>as the filter has access to the Session. However, a little
>experimenting indicates that the Session is gone after
>PostRequestHandlerExecute occurs, which is before the response filters
>are executed.
>
>So, I seem to be unable to manipulate the entire page and read a session
>at the same time.
>
>Any suggestions would be VERY appreciated!
>
>Thanks,
>
>Al Cohen
>www.alcohen.com
- Next message: JollyK: "Setting class property in web.config file"
- Previous message: Scott: "Re: Double open dialog when downloading Excel file from ASP.NET."
- In reply to: Al Cohen: "Modifying page output using Session data?"
- Next in thread: Al Cohen: "Re: Modifying page output using Session data?"
- Reply: Al Cohen: "Re: Modifying page output using Session data?"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|