Asp.Net中Response.Write()导致页面CSS无效的解决办法——ClientScript.RegisterStartupScript

大家可能会遇到使用Response.Write()导致页面CSS无效的情况,现在该问题微软推荐了新的解决办法——ClientScript.RegisterStartupScript方法。

 

CSS无效的原因:

由于Response.Write()是输出到页面的最顶端,导致了页面不符合DTD规范:
<!– DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd” –>

所以,浏览器会出现无法识别CSS的问题。

 

问题解决方法:

ClientScript.RegisterStartupScript(this.GetType(),"deleteSuccess","<script>alert('恭喜,删除成功!')</script>");

第一个参数是获取当前页面的类型:this.GetType()

第二个参数是Script的名字,随便取,用来区分不同的脚本块,相同key值的脚本块会放置同一个脚本标签内部。
第三个参数是Script的内容,可以包含脚本标签,也可以不包含。

重载方法还有第四个参数:bool addScriptTags。默认值为false,即默认情况下不会再脚本外部添加<script type="text/javascript>...</script>脚本标签的。 如果想要添加该脚本标签,则设为true。

 

下面截图为证:

后台执行下面的代码:

ClientScript.RegisterStartupScript(this.GetType(), "selectedNone", "alert('您还没有选择任何评论选项,无法继续删除!或许这是个非法请求!')");

 

1、第四个参数 addScriptTags 为空或者false

此时页面会出现脚本错误的提示。

 

2、第四个参数 addScriptTags 为true

结论:

ClientScript.RegisterStartupScript方法的第四个参数 addScriptTags 默认值应该为false;

RegisterStartupScript方法的作用就是将第二个参数中的脚本(可以有脚本标签也可以没有脚本标签)放置到页面form表单最后的位置(</form>标记前面);

如果第三个参数中不存在脚本标签,最后一个参数addScriptTags一定要设为true否则会出现脚本错误。

posted @ 2010-12-13 15:55  wadeheng  阅读(1104)  评论(2编辑  收藏  举报