Page类中提供了一个ClientScript属性去管理后台注册脚本的事情,里面最经常用到的就是往前台注册脚本。我觉得它有二个比较容易混淆的方法,一个是RegisterClientScriptBlock,一个是RegisterStartupScript,今天仔细看了一下,发现了这二个方法的区别,特准备记录一下。
RegisterClientScriptBlock是在Form里面所有html元素的前面,VIEWSTATE元素的后面加载脚本块的,如果你在脚本中用到了html元素的,就是说你用了document.getElementById这类的操作的话就会报脚本错误,缺少对象。因为你脚本中使用的元素在脚本运行的时候还没有加载,所以缺少对象是很正常的。MSDN的解释是: 在已呈现的页的顶部添加一个脚本块.
RegisterStartupScript是在</Form>之前,所有html元素的后面加载脚本块的,这个时候所有的html元素都已经加载完成了,用document.getElementById这类的操作就可以正常执行了。MSDN中的解释是:添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行。
二种方式视自己需求灵活使用。如果就简单的弹个框提示一下可以使用前者,如果需要用到页面中的html元素,则使用后者。
可能MSDN中解释的更加专业一点吧,不过我觉得我的理解更加直观点。