动态注册客户端脚本的方法
1、RegisterClientScriptBlock(Type type,string key,string script)
该方法一字符串形式注册脚本,生成的脚本位于Web页面的开始处,<form>标签之后。执行该方法的时候,页面的其他元素可能还没有载入完毕,因此这个时候调用页面的元素
会发生错误。
2、RegisterStartupScript(Type type,string key,string script)
该方法注册的脚本位于Web页面的底部</form>标签之前,因此,可以灵活地使用页面元素。
3、Response.Write(string script)
把脚本添加到html代码的顶部,即<!DOCTYPE>之前。
参数:
type:要注册脚本的类型
key:要注册脚本的键
script:要注册脚本文本的内容
例:
if (this.txtdatetime.Value == DateTime.MinValue.ToString() || this.txtdatetime.Value == null || this.txtdatetime.Value == "")
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "key02", "<script>alert('请选择立项时间!');</script>");
//Response.Write("<script>alert('请选择立项时间!');</script>");
return;
}
由于Response.Write("<script>alert('');</script>");方法是在页面的顶部输出脚本,因此会破坏页面HTML结构,有时会造成JavaScript或
CSS显示异常,因此在实际开发中不推荐使用。
4、Literal 控件
我们还可以用<asp:Literal>控件替代
this.Literal.Text="<script>alert('');</script>";
控件Mode属性有3个值,分别3中用途
以上4种向页面注册脚本的方式,一旦遇到<UpdatePanel>控件,全部失效,甚至报错。至少我在IE中测试如此。
5、ScriptManager.RegisterClientScriptBlock((Button)Button6,typeof(Button), "1", "alert('发送成功');location.href='firstzone.aspx';", true);
这么多人浏览了,怎么一点意见也没有?写的错了或是对了,又或者是写的不足,都没个人提醒啊?