ASP.NET属于客户端技术。使用Server端技术实现对Client端脚本的动态控制是早在ASP时代就备受关注的话题。评价每种新的Server端技术都需要对其控制Client脚本的能力进行考察。 ASP.NET使用客户端脚本有四种方法,以下将分别介绍并进行对比:
1.Page.Response.Write
代码:Page.Response.Write("<script>alert('ss');</script>");
这是ASP程序员最好理解的一种方法。这里与ASP中的Response.Write一样,都是直接用于在客户端显示某些内容。当然,也包括JS脚本。
这种方法生成的js代码位于整个文档的最开始,整个页面将首先执行js代码,再加载页面内容,因此当js代码的内容需要与页面对象交互时,使用这一方法并不合适。
很多js脚本需要在页面还没有开始加载时执行,则适合使用这种方法。
2.mybutton.Attributes.Add
代码:mybutton.Attributes.Add("onclick","javascript:alert('ss');");
mybutton是一个按钮对象,这个方法可以用于建立某个表单的鼠标事件,比如onclick。
任何页面对象都可以使用这种方法建立脚本,这样建立的脚本可以不影响整个页面的加载,仅仅是在发生某些交互行为时执行。
3.Page.RegisterStartupScript
代码:Page.RegisterStartupScript("test","<script>alert('ss');</script>");
该方法生成的客户端脚本位于</form>Form结束标签的上一行,页面将首先装载表单对象,再执行脚本。这是使用最多的一种方法,主要特点在于可以建立需要与表单对象交互的js代码。
4.Page.RegisterClientScriptBlock
代码:Page.RegisterClientScriptBlock("test","<script>alert('ss');</script>");
这种方法的原型与Page.RegisterStartupScript其实是一样的,其不同在于生成的js代码位于<form>Form起始标签的下一行,在装载表单对象之前将执行这些代码。这一方法也不适合需要交互表单对象信息的脚本。
以上几种方法都可以方便的建立客户端JS代码。如果脚本比较复杂,可以将脚本写入字符串变量,再套用相应的方法。这些成员函数常常使用在Page_Load函数中,例如:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//mybutton.Attributes.Add("onclick","javascript:alert('ss');");
//Page.Response.Write("<script>alert('ss');</script>");
//Page.RegisterStartupScript("test","<script>alert('ss');</script>");
Page.RegisterClientScriptBlock("test","<script>alert('ss');</script>");
}
最后提醒一下:这两个方法的连续使用确保在10次以内,超过10个,数据类型将从 ListDictionary转为Hashtable,写入的SCRIPT语句的顺序会不同于你预想的,因为Hashtable不是线性存储结构。
1.Page.Response.Write
代码:Page.Response.Write("<script>alert('ss');</script>");
这是ASP程序员最好理解的一种方法。这里与ASP中的Response.Write一样,都是直接用于在客户端显示某些内容。当然,也包括JS脚本。
这种方法生成的js代码位于整个文档的最开始,整个页面将首先执行js代码,再加载页面内容,因此当js代码的内容需要与页面对象交互时,使用这一方法并不合适。
很多js脚本需要在页面还没有开始加载时执行,则适合使用这种方法。
2.mybutton.Attributes.Add
代码:mybutton.Attributes.Add("onclick","javascript:alert('ss');");
mybutton是一个按钮对象,这个方法可以用于建立某个表单的鼠标事件,比如onclick。
任何页面对象都可以使用这种方法建立脚本,这样建立的脚本可以不影响整个页面的加载,仅仅是在发生某些交互行为时执行。
3.Page.RegisterStartupScript
代码:Page.RegisterStartupScript("test","<script>alert('ss');</script>");
该方法生成的客户端脚本位于</form>Form结束标签的上一行,页面将首先装载表单对象,再执行脚本。这是使用最多的一种方法,主要特点在于可以建立需要与表单对象交互的js代码。
4.Page.RegisterClientScriptBlock
代码:Page.RegisterClientScriptBlock("test","<script>alert('ss');</script>");
这种方法的原型与Page.RegisterStartupScript其实是一样的,其不同在于生成的js代码位于<form>Form起始标签的下一行,在装载表单对象之前将执行这些代码。这一方法也不适合需要交互表单对象信息的脚本。
以上几种方法都可以方便的建立客户端JS代码。如果脚本比较复杂,可以将脚本写入字符串变量,再套用相应的方法。这些成员函数常常使用在Page_Load函数中,例如:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//mybutton.Attributes.Add("onclick","javascript:alert('ss');");
//Page.Response.Write("<script>alert('ss');</script>");
//Page.RegisterStartupScript("test","<script>alert('ss');</script>");
Page.RegisterClientScriptBlock("test","<script>alert('ss');</script>");
}
最后提醒一下:这两个方法的连续使用确保在10次以内,超过10个,数据类型将从 ListDictionary转为Hashtable,写入的SCRIPT语句的顺序会不同于你预想的,因为Hashtable不是线性存储结构。