我确定你之前有过这个,如果你能指出类似的话......
我使用通常的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();
在它转到回发事件的下一页
之前答案 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将从历史记录
中删除此中间警报页面希望有所帮助