关于向 ASP.NET 网页动态添加客户端脚本的二个方法的区别

    Page类中提供了一个ClientScript属性去管理后台注册脚本的事情,里面最经常用到的就是往前台注册脚本。我觉得它有二个比较容易混淆的方法,一个是RegisterClientScriptBlock,一个是RegisterStartupScript,今天仔细看了一下,发现了这二个方法的区别,特准备记录一下。

    RegisterClientScriptBlock是在Form里面所有html元素的前面,VIEWSTATE元素的后面加载脚本块的,如果你在脚本中用到了html元素的,就是说你用了document.getElementById这类的操作的话就会报脚本错误,缺少对象。因为你脚本中使用的元素在脚本运行的时候还没有加载,所以缺少对象是很正常的。MSDN的解释是: 在已呈现的页的顶部添加一个脚本块.

    RegisterStartupScript是在</Form>之前,所有html元素的后面加载脚本块的,这个时候所有的html元素都已经加载完成了,用document.getElementById这类的操作就可以正常执行了。MSDN中的解释是:添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行。

    二种方式视自己需求灵活使用。如果就简单的弹个框提示一下可以使用前者,如果需要用到页面中的html元素,则使用后者。

    可能MSDN中解释的更加专业一点吧,不过我觉得我的理解更加直观点。

作者:bluesky4485
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/bluesky4485/p/1599964.html