RegisterStartupScript,RegisterClientScriptBlock,Response.Write的用法和区别

[ At 11/23/2009 By wukong   0 comments ]

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交流经验。

 

« 如何去掉kingcms生成页面代码中的fun.js引用等信息向文本框光标所在位置插入内容的的js代码,支持ie和ff »
  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By 空空如也 

Copyright 167-2009 www.7es.cn . Some Rights Reserved. Email:iamwgh@msn.com QQ:49556
Friends site:Null