在C#中显示警报消息后重定向页面

时间:2017-04-27 05:30:57

标签: c#

我想在C#

中向用户显示警告后刷新页面

我试过

System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "alert('Data has been saved and submitted');", true); 
Page.Response.Redirect(Page.Request.Url.ToString());

页面被重定向但我没有得到警告

我也试过

System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "var r = confirm('Data has been saved and submitted confirm'); if (r == true) { <%#namespace.project.class().PageRefresh()%> } else { <%#new namespace.project.class().PageRefresh()%> } ", true);

public void PageRefresh() {

            Page.Response.Redirect(Page.Request.Url.ToString());
        }

在这种情况下,我会收到警报,但重新加载没有发生

我不想像下面那样使用客户端页面刷新

location.reload(true)
window.location.href = window.location.href 

我想用

Page.Response.Redirect(Page.Request.Url.ToString());

但它应在警告用户后执行

1 个答案:

答案 0 :(得分:1)

为什么第一次尝试不起作用:在请求期间,您正在注册一个新脚本,然后告诉IIS执行重定向,带脚本的页面不会返回给用户,只是重定向,因为在IIS级别上需要重定向浏览器。

为什么第二次尝试不起作用:您尝试在编译页面之后将c#代码注入客户端脚本。所以<%#...%>将不会被编译,它将看起来像生成的标记,您可以使用浏览器元素检查器查看结果代码,这将证明它。

虽然您不想这样做,但它应该在客户端实现,因为页面在呈现之后和发布页面之前不会调用c#后端代码。实际上,您可以通过不同的方式实现它:

第一种方法是注册所需的alert脚本并立即重新加载。当alert中断页面执行时,用户将不会被重定向,直到他没有在警报窗口中按OK。这种方式简单易懂。

System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "alert('Data has been saved and submitted'); location.reload(true);", true); 

另一种方法是在submit之后执行表单alert并在服务器端实现重定向,因为你不想写一些js。

System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "alert('Data has been saved and submitted'); document.forms[0].submit();", true);

并在Page_Load事件中:

protected void Page_Load(object sender, EventArgs e)
{
    if (this.IsPostBack)
    {
        Page.Response.Redirect(Page.Request.Url.ToString());
    }
}