Telerik RadAlert后退按钮缓存问题

时间:2010-03-23 23:07:06

标签: telerik

我确定你之前有过这个,如果你能指出类似的话......

我使用通常的Sys.Application.remove_load和add_load过程创建RadAlert窗口的服务器端,但是当用户在激活后按下后退按钮时,警报会一直弹出,因为它似乎在缓存。我试图在一个按钮上放一个onclick事件,以便在移动到下一页之前使用remove_load清除该函数,但它似乎仍然无法清除它。

它用于验证,因此如果用户输入失败的验证,它会弹出。如果他们然后进入正确的验证,则转到下一页。如果他们然后使用后退按钮,它就会再次弹出。有什么想法吗?

服务器端:

private void Page_Load(object sender, System.EventArgs e) 
{
   if (!IsPostBack) 
   {
      btnSearch.Attributes.Add("onclick", "Sys.Application.remove_load(f);"); 
   }
}

private void btnSearch_Click(object sender, System.EventArgs e) 
{
   string radalertscript = "(function(){var f = function(){radalert('Welcome to RadWindow Prometheus!',     330,     210);   Sys.Application.remove_load(f);};Sys.Application.add_load(f);})()";

   RadAjaxManager1.ResponseScripts.Add(radalertscript);
}

我也尝试过使用

   RadAjaxManager1.ResponseScripts.Clear();

在它转到回发事件的下一页

之前

3 个答案:

答案 0 :(得分:1)

Lingvomir所说的是正确的。我建议作为一个解决方案是ajaxify搜索按钮。 e.g。

 <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="Button1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server">
</telerik:RadWindowManager>
<asp:Button ID="Button1" runat="server" Text="show radalert" OnClick="Button1_Click" /><br />

和代码隐藏:

 protected void Button1_Click(object sender, EventArgs e)
{
    string radalertscript = "radalert('Welcome to RadWindow Prometheus!',330,210);";
    RadAjaxManager1.ResponseScripts.Add(radalertscript);
}

答案 1 :(得分:0)

我认为问题不在于radalert()函数 - 如果你使用普通的浏览器alert(),你也会得到相同的行为。每次在浏览器中加载页面时都会引发Sys.Application.Load事件 - 包括使用后退按钮再次打开它时。如果添加radalert()的代码也在页面上,它也将运行,并且在Load期间将显示警报。

答案 2 :(得分:0)

您需要一个加载客户端版本的中间页面 警报,然后回调函数可以导航到正确的页面 使用location.replace(...) - 使用location.replace将从历史记录

中删除此中间警报页面

希望有所帮助