在Asp.net经常使用到弹出一个对话框,就是类似下面这种的
Response.Write("<scrit>alert('Hello');</script>");
以前一直在用,而且也不以为然,不过最近发现它实在是太糟糕了。因为Response.Write()是写在网页的最顶端,就是<html> 等标签的上面,反正就是网页的内容最前面就是了,这可能导致一些意想不到的情况,例如使用之后字体大小突然改变,而且它是先出现对话框或者其他东西才会输出其他东西,最明显的是对话框出来了,网页是白白的,什么也没有。反正它是比较糟糕的东西,其他人也说过很多,不说了。
我们应该使用RegisterStartupScript跟RegisterClientScriptBlock来代替。
这两者有什么区别呢:
1) RegisterStartupScript里面的内容会写在 </form>前面,也就是网页上所有东西出来,它才出来,我觉得它是很好的选择。
2) RegisterClientScriptBlock是在<form>后面出来,输出的时候是在其他元素的前面。应用在什么场合,现在还不清楚。
实例:
public void ShowMessageByStartup()
{
string ConfirmContent = "<script>alert('添加成功,谢谢您的参与。'); </script>";
Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("confirm", ConfirmContent);
}
public void ShowMessageByStartupByClientScript()
{
string ConfirmContent = "<script>alert('添加成功,谢谢您的参与。'); </script>";
Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterClientScriptBlock("confirm", ConfirmContent);
}
public void ShowMessage(string message)
{
string strMessage = message;
string strScript = "<script>alert('" + message + "'); </script>";
Page ParameterPage = (Page)System.Web.HttpContext.Current.Handler;
ParameterPage.RegisterStartupScript("alertmessage", strScript);
}