2016-04-15 47 views
2

經過大量的研究仍然沒有答案。Server.Transfer不起作用

我使用Web窗體應用程序VS 2013

我的代碼是相當簡單:

Server.Transfer("~/Success.aspx",true); 

在此之後,執行的Success.aspx加載事件,但在瀏覽器中我只看到原來的主要形式。

我創建的任何空的Web窗體只上有一個按鈕,但運行下面的代碼

Server.Transfer("~/WebForm2.aspx",true); 

我仍然看到MainForm.aspx後,(的Page_Load WebForm2的事件處理程序運行)

== ========================

根據IrishGrifgin的評論更新。

我確實在我的代碼中有一個JAX。我確實有使用Ajax的UpdatePanel。如果這是server.Transfer的問題,我們如何解決這個問題?

+1

你是在一個支持AJAX的頁面上調用它嗎? – IrishChieftain

+0

我不這麼認爲。我怎樣才能檢查這個? –

+2

不要試圖找到解決方案,更好地使用其他方式來設計你的頁面。 Server.Transfer很棒,但如果你不明白真正做什麼,那就避免它。而且在大多數情況下,不能與複雜網頁的工作,不能做一些後背上......簡單,找到其他的方式 - Server.Transfer的工作 - 但什麼是沒有是不是你所期望的...... – Aristos

回答

1

最後我找到了解決方案。謝謝大家的幫助(每個給我一個想法的人+1)。

因此,這裏是我的代碼:

CS:Server.Transfer("~/Success.aspx",false);

HTML:

<div id="submit">     
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" UseSubmitBehavior="False" />     

</div> 

如前所述提交按鈕是一個更新面板內。 在這種情況下,我們需要使用下面的代碼:

<Triggers> 
     <asp:PostBackTrigger ControlID="btnSubmit" /> 
    </Triggers> 

此代碼基本上使得提交按鈕同步執行(覆蓋更新面板行爲)。

1

沒有看到太多的代碼,很難真正調試這個問題。改用Response.Redirect函數。

Response.Redirect("~/Success.aspx"); 
+0

了一個建議,但不是一個問題的答案。 – Aristos

+0

OP沒有提出問題。他也沒有提到的Response.Redirect無法使用,由於業務規則(我不知道那會是什麼樣的業務規則)。 Response.Redirect通常處理他請求的內容。考慮到初始文章中提供的信息有限,dotctor也有類似的答案。 –

+0

dotctor是給一個答案,你有其他問題回答... – Aristos

2

我不認爲你明白Server.Transfer()是做什麼的。

它暫時重定向代碼運行在第二頁中的代碼..但它返回控制回到原來的頁面一旦完成。瀏覽器完全有可能不會從第二頁獲取(或看到)html。

https://msdn.microsoft.com/en-us/library/ms525800(v=vs.90).aspx

如果你想完全把控制權交給第二頁,那麼你需要使用Response.Redirect。如果你的業務規則說你不能使用它,那麼我建議你重新審視業務規則並改變它們。