2009-08-26 111 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。