2

我已经使用 ASP.Net AJAX 实现了一个回调方法,并希望在此回调发生到另一个页面时重定向到。因为从回调请求时重定向是不可能的。我得到错误"Response.Redirect cannot be called in a Page callback"

我如何为任何被触发的回调事件进行回调重定向?例如:我有一个 RadComboBox,它在 radcombobox 中键入的每个字母上实现对服务器的回调。现在说,在为 RadComboBox 请求项目时,会话超时,应用程序需要重定向到另一个页面。我该怎么做?

当在回调中没有脚本可以执行,就像脚本一样ScriptManager.RegisterStartUpScript(this.gettype(),"script","Do javascript redirect to session timeout page ?",true);

我看到解决此问题的唯一其他方法可能是在我的 MasterPage Load 方法中添加一个检查,该方法检查会话是否超时并添加到 HttpCookie 然后在 MasterPage html 上添加一个 javascript 方法,该方法具有检查值的超时间隔在 cookie 中,以便可以将其重定向到另一个页面?!. 现在,这种方法需要一直运行可能会导致一些与性能相关的问题??

当请求来自回调时,还有其他方法可以实现重定向吗?我已经尝试过 Response.RedirectLocation 但似乎没有效果?

4

2 回答 2

1

我从事的 Web 项目在会话超时时实现重定向我面临的问题是在回调期间,如果会话超时,它曾经导致此错误。

我检查会话超时的实现是在登录期间和每个页面加载期间设置一个会话变量,检查此会话值是否为空,然后在超时超时后重定向到登录。因此,现在作为一种解决方案,我在控件中显示一条消息,该消息会导致“会话超时”的回调,并且在我的母版页中检查会话超时添加代码以便它可以重定向到登录页面之前进行了检查。

//--------------------------------------------------------------------------
    protected override void OnLoad(EventArgs e)
    {
        if (!Page.IsCallback)
        {
            Response.Redirect("~/Login.aspx",true);
        }
于 2013-12-03T14:28:12.673 回答
0

您可以尝试Server.Transfer方法,看看是否可以。

其他选项是将 True/False 发送回客户端,并使用 javascript 方法来接受并进行重定向。

这是一个如何使用 jQuery 调用服务器端方法并接受其结果的示例。

http://www.asp.net/ajaxlibrary/jquery_webforms_retrieve_data_from_pagemethod.ashx

于 2013-09-13T10:54:11.783 回答