要实现的功能:某项操作后,使用alert()提示框提示"操作成功"之类的提示,然后使用response.Redirect()来进行页面重定向。
出现的问题:运行代码,操作完成后,直接跳转到指定页面,但是并没有弹框提示。
示例代码:
1 protected void gvAttrList_RowDeleting(object sender, GridViewDeleteEventArgs e) 2 { 3 Page.ClientScript.RegisterStartupScript(this.GetType(), "delAtt", "alert('删除成功!')"); 4 response.Redirect("default.aspx"); 5 }
原因解析:response.Redirect() 方法是服务器端方法,而 alert() 是客户端方法,由于当前单击事件是在服务器端进行的,也就会先执行response.Redirect()方法,而无法判断客户端的 alert 是否已经执行。重定向后进行其他页面加载而不会再执行当前页面的alert()了。
解决方法:在添加的js代码中使用location = 'ProAttribute.aspx'进行页面跳转,由于都是在客户端进行,就会先执行alert(),然后进行页面跳转。
示例代码:
1 protected void gvAttrList_RowDeleting(object sender, GridViewDeleteEventArgs e) 2 { 3 Page.ClientScript.RegisterStartupScript(this.GetType(), "delAtt", "alert('删除成功!'); location = 'ProAttribute.aspx'"); 4 response.Redirect("default.aspx"); 5 }