Server.Transfer 无效

Server.Transfer does not work

经过大量研究,我仍然没有答案。

我使用 WebForm 应用 VS 2013。

我的代码相当简单:

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

在此之后,执行了 Success.aspx 的加载事件,但在浏览器中我只能看到原始主窗体。

我创建了任何只有一个按钮的空 Web 表单,但在 运行 之后是以下代码

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

我仍然看到 MainForm.aspx,(Page_load WebForm2 的事件处理程序运行)

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

根据 IrishGrifgin 的评论更新。

我的代码中确实有 aJax。我确实有使用 Ajax.If 的 UpdatePanels 这是 server.Transfer 的问题,我们如何解决这个问题?

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

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

我认为你不明白 Server.Transfer() 的作用。

它暂时将代码重定向到 运行 第二页中的代码。但是一旦完成,它 returns 将控制权返回到原始页面。浏览器完全有可能不会从第二页获取(或看到)html。

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

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

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

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