2009-08-24 70 views
2

我有一個提交按鈕的ASP.NET2.0網頁。 當用戶點擊時,我會即時生成一個XML文件並作爲結果返回。在ASP.NET中丟失向後導航

下面是代碼:

protected void submitBtn_Click(object sender, EventArgs e) 
    { 
     string result = this.ProduceMyXmlResult(); 

     this.Response.Clear(); 
     this.Response.StatusCode = 200; 
     this.Response.ContentType = "application/xml"; 
     this.Response.ContentEncoding = System.Text.Encoding.UTF8; 
     this.Response.Write(result); 
     this.Response.End(); 
    } 

的一段代碼不正是我想要的。但是,瀏覽器無法將XML文件識別爲新頁面,因此BACK按鈕不會將我帶回到原始頁面。爲什麼以及如何克服這一點?

回答

4

我認爲最簡單的方法是創建一個單獨的頁面,該頁面在Page_Load()上執行此代碼,並在按下按鈕時重定向到該頁面。

你沒有向後導航的原因是因爲瀏覽器不知道頁面已經改變。由於「提交」按鈕正在執行回發,並且您正在返回XML數據作爲對回發的響應,因此它會在瀏覽器中顯示,就好像這只是當前頁面的一些轉換(就像您會改變Label控件的文本)。

完成此操作的「正確」方式是使用某種類型的HTTP處理程序,但我沒有經驗來建議正確的方法,並且您已經爲此方法使用了C#代碼隱藏功能。

+0

+1比我的想法更好。 – MusiGenesis 2009-08-24 12:09:29

+0

+1去HTTP處理程序(即實現IHttpHandler + web.config魔術或添加一個ASHX文件 - 一個「頁面」像IHttpHandler包裝,沒有web.config的東西) – veggerby 2009-08-24 12:34:15