RegisterStartupScript, RegisterClientScriptBlock, Response.Write三种方法在asp.net 中都可以向页面输出一段脚本代码,或者html代码。但三种方法的输出效果还是有一定差异的,在实际开发中要根据需要灵活运用。
三种方法向页面输出代码的用法如下:本文来自悟空的博客www.7es.cn
Page.Response.Write("<script>var responseout;</script>");
Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScriptout;</script>");
Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlockout;</script>");
同样是输出一段脚本代码到目标页面代码中,只是位置各有不同。
Response.Write 输出后的代码位置是在源文件的第一行. RegisterClientScriptBlock 输出后的代码位置是在<form>的下面的一行.也就是在asp.net自带的脚本和一些隐藏域的下面。 RegisterStartupScript 输出后的代码位置会在</form>标签的上面一行,也就是asp.net默认form标签内容结束时。 RegisterClientScriptBlock的原型与RegisterStartupScript相同,两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置.RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock或Response.Write。 举例,如果你的页面aspx文件中中<form>标签签名写好了一个固定的脚本,里面有一个函数,而你的.cs代码文件中又动态输出一段脚本要调用该函数,那么这段动态输出的脚本最好使用 RegisterClientScriptBlock或者RegisterStartupScript而不是用response.write,因为这样才能保证动态输出的那段脚本在你固定写好的函数之后,才不会出现调用时对象不存在的错误。 具体的效果可以写个简单测试页面看输出的html代码,或者联系我博客www.7es.cn交流经验。