2011-08-22 50 views
2

不同无处不在我的web应用程序,我使用重定向这样的:Response.Redirect的行为从内部的UpdatePanel

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

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

但现在我在一个ASP.NET的UpdatePanel坐在一个按钮的onclick事件这样做的,它试图带我到以下地址: http://localhost/myapp/%2fmyapp%2fSearchResults.aspx

有没有人有一个想法如何解决这个问题?

回答

5

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

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

<asp:PostBackTrigger ControlID="btnRedirectButton" /> 
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上,所以我无法测试这是否是正确的版本,但这应该有希望让你走上正确的轨道。

编辑:该链接有2个其他可能的解决方案:

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

+0

嘿我有这个链接在这里先:) –

+0

呃?你在19分钟前回答,我在21分钟前回答:D –

+0

我尝试了所有这些,但他们都没有工作。 ScriptModule已经包含在我的项目中。重定向方法会产生一个警告,说明存在潜在危险的Url,JavaScript解决方案没有。 – Tys

2

我不相信这是在默认情况下没有在下面的博客选项2的支持。 虽然有几个解决方案。

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

而且我读过你可以把一个按钮,在那里,以及由<触发>元素,并在您button_click包围做重定向,但从未尝试过这种方法:

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

0

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

相关问题