花花草草

博客园 首页 新随笔 联系 订阅 管理

在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);
}

posted on 2009-07-28 16:20  sosoguy  阅读(1018)  评论(0编辑  收藏  举报