Response.Redirect的行为与UpdatePanel中的行为不同

时间:2011-08-22 23:07:23

标签: c# asp.net response.redirect

在我的网络应用程序的任何地方,我都使用这样的重定向:

Response.Redirect("~/SearchResults.aspx", true); 

这总是把我带到正确的页面。 http://localhost/myapp/SearchResults.aspx

但是现在我在ASP.NET UpdatePanel中的按钮的onclick事件中执行此操作,并尝试将我带到以下地址: http://localhost/myapp/%2fmyapp%2fSearchResults.aspx

有没有人知道如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

最后,我找到了这个问题的真正答案。事实证明,这不是我之前发布的修复。虽然当时这是一个很好的解决方法,但真正的问题是我正在使用的CMS带来了过时版本的 MicrosoftAjaxWebForms.js 。更新此脚本,解决了我的所有异步回发重定向问题。

以下是您只想要一个按钮执行完整回发并在更新面板中重定向的解决方法。

<asp:PostBackTrigger ControlID="btnRedirectButton" /> 

答案 1 :(得分:2)

我不相信默认情况下,如果没有选项2,则在下面的博客中支持此功能。 但有几种解决方案。

http://aspdotnetcodebook.blogspot.com/2008/03/using-responseredirect-in-aspnet-ajax.html

另外我已经读过你可以在里面放一个按钮,并且包含一个&lt; trigger&gt;元素和你的button_click做重定向但从未尝试过该方法:

http://www.freejobsreference.com/dotnetforums/210-Response-Redirect-not-working-error-if-button-is-inside-Update-Panel.aspx

答案 2 :(得分:1)

Response.Redirect应该在更新面板中工作,这是已知的例外情况之一。

然而,时间至少是,如果你的web.config中没有类似于此的块,它将无效:

   <httpModules>
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>

我不再使用ASP.Net ajax而且我在Mac上,所以我无法测试这是否是正确的版本,但这应该会让你走上正轨。

编辑:此链接有另外两种可能的解决方案:

http://aspdotnetcodebook.blogspot.com/2008/03/using-responseredirect-in-aspnet-ajax.html

答案 3 :(得分:0)

我已经尝试了以上所有建议,但没有运气。问题仍然存在,所以现在我已经解决了这个问题,通过从更新面板中取出重定向按钮。经过一段时间的思考,我得出结论,这也是按钮最合理的地方,因为它不会调用面板的更新,而是整个页面的更新。