Server.Transfer does not work

时间:2016-04-15 15:18:22

标签: c# asp.net .net webforms

After lots of research still I do not have an answer.

I use WebForm app VS 2013.

My code is fairly simple:

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

After this, load event of Success.aspx is executed but in the browser I only see original Main form.

I created any empty Web Form with only a Button on it but after running the following code

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

still I see MainForm.aspx,(Page_load event handler of WebForm2 runs)

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

Update per IrishGrifgin's comments.

I indeed have aJax in my code. I do have UpdatePanels which use Ajax.If this is the problem for server.Transfer how can we resolve this?

3 个答案:

答案 0 :(得分:2)

我认为您不了解Server.Transfer()的作用。

它暂时重定向代码以在第二页中运行代码..但它会在完成后将控制权返回到原始页面。浏览器完全有可能无法从第二页获取(或查看)html。

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

如果您想完全将控制权转移到第二页,则需要使用Response.Redirect。如果您的业务规则说您不能使用它,那么我建议您重新审视业务规则并进行更改。

答案 1 :(得分:2)

最后我找到了解决方案。谢谢大家的帮助(给每个给我一个想法的人+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>

此代码基本上使执行提交按钮同步(覆盖更新面板行为)。

答案 2 :(得分:1)

没有看到很多代码,很难真正调试这个问题。请改用Response.Redirect函数。

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