2009-08-26 109 views
0

我动态生成存储在字符串变量中的HTML。
我想打开一个新窗口,其中包含从此HTML创建的新页面。
这看起来太简单了,但我找不到解决方案。

我正在使用ASP.NET 3.5和VS2008。

谢谢,
保罗。ASP.NET动态创建页面

回答

1

最好的想法是创建一个HTTP处理程序,在你的web.config文件来处理,你需要有动态内容的各种请求的路径进行注册,然后检测基于HttpContext.Current显示的内容。 Request的。

这样,您就没有保存任何文件,并从您的字符串变量写入到输出流

+0

请您详细说明这个想法...似乎无法通过头部得到它。 – ThatBloke 2009-08-26 13:42:31

+0

您可以创建一个实现System.Web.Handlers.IHttpHandler(或System.Web.Handlers.IHttpAsyncHandler,如果您想创建异步处理程序)的类。你实现了ProcessRequest(或异步情况下的BeginProcessRequest和EndProcessRequest),HttpContext通过参数传递给你。 使用QueryString/Form或其他任何你有的输入,决定你必须发回哪一段生成的HTML。生成HTML,然后使用回复于(STR),该溶液基本上使用相同的页,并且在同一网址,以产生两个完全不同的内容(主输出或字符串变量的输出)写入它 – LorenVS 2009-08-26 16:18:56

0

您可以在新页面试试这个:

保护小组的Page_Load(BYVAL发件人为对象,BYVALË作为System.EventArgs)把手Me.Load

HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearHeaders() HttpContext.Current.Response.ClearContent()

HttpContext.Current.Response.ContentType =“text/html的 HttpContext.Current.Response.Write(YourString) HttpContext.Current.Response.Flush() HttpContext.Current.Response.End()

完Sub

+0

尽管正确。能够将动态内容推送到独立位置会更好。 – LorenVS 2009-08-26 12:49:54

0

创建一个带有查询字符串的.ashx页面,例如pageid = 12345

这个页面的目的很简单,就是根据pageid查询字符串查找一个会话id。例如

var page = Session["PAGE_" + QueryString["pageid"]].ToString(); 
Response.Write(page); 

在,在一个可变生成HTML页面,在会话的变量存储在Page_Init

`[ “PAGE_12345”] = generatedHtml;

然后在Page_Load上生成一个javascript,打开url pagebuilder.ashx?pageid = 12345。

就是这样。您将能够在另一个窗口中打开您新生成的html。