可以这样嘛.
if(Page.IsClientScriptBlockRegistered("1"))
            {
                RegisterClientScriptBlock("2","<script>alert(2)</script>")
            }

解决方案 »

  1.   

    只要RegisterClientScriptBlock方法的第一个参数,即脚本的标识,是相同的,前面的脚本就后被后面的覆盖掉。
      

  2.   

    引用 webdiyer(陕北吴旗娃) :
    -------------------------------------------------------
    只要RegisterClientScriptBlock方法的第一个参数,即脚本的标识,是相同的,前面的脚本就后被后面的覆盖掉。
    --------------------------------------------------------
    这样不行,比如下面这句:RegisterClientScriptBlock("key","<script>alert(1)</script>");
    RegisterClientScriptBlock("key","<script>alert(2)</script>");测试结果是"<script>alert(2)</script>"没有注册到页面。
      

  3.   

    只要key相同,就可以覆盖原来的脚本
      

  4.   

    可是我在 Page_Load 里面写下这两句RegisterClientScriptBlock("key","<script>alert(1)</script>");
    RegisterClientScriptBlock("key","<script>alert(2)</script>");运行之后,弹出的是 alert(1);
      

  5.   

    对不起,测试了一下确实如楼主所说,第一个没有被第二个覆盖掉,看了一下msdn文档,对这个方法的说明中有:具有相同 key 参数值的任何脚本块均被视为重复的
    看来第一次注册的脚本不是被替换了,而是后面的脚本因标识相同而被忽略了。
      

  6.   

    to webdiyer(陕北吴旗娃) :
    恩,你说的对。能不能通过 [先删除指定key的script,再注册该key的script] 的方法来实现替换呢?我现在是用覆写  ((LiteralControl)Controls[2]).Text 的方法来实现的