发新话题
打印

服务器端处理JS的利器ClientScript

服务器端处理JS的利器ClientScript

1.0/1.1 2.0 Page.RegisterClientScriptBlock Page.ClientScript.RegisterClientScriptBlock Page.RegisterStartupScript Page.ClientScript.RegisterStartupScrip 这两个用于注册脚本的方法需要一组键/脚本参数对。

 

一.使用Page.ClientScript.RegisterClientScriptBlock 使用 Page.ClientScript.RegisterClientScriptBlock可以将javascript 函数放置在 HTML 代码中开启元素

的后面。

 

二.Page.ClientScript.RegisterStartupScript() 当您有一个想要在页面加载时启动的 JavaScript 函数时.

  1、RegisterStartupScript 方法的两个可能结构如下: • RegisterStartupScript (type, key, script) • RegisterStartupScript (type, key, script, script tag specification) Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript","function AlertHello() { alert('你好,ASP.NET'); }", true);

   2、 Button1.Attributes["onclick"] = "AlertHello()"; Button2.Attributes["onclick"] = "AlertHello()";

 

三. Page.ClientScript.RegisterClientScriptInclude 这个是用来include js 文件的,例如:

  page.ClientScript.RegisterClientScriptInclude("mykey","myScript.js");

  Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript""MyJavaScriptFile.js");

 

几个问题补充:

 

ClientScriptManager 类用于管理客户端脚本并将它们添加到 Web 应用程序中。可以从 Page 对象的 ClientScript 属性获取对 ClientScriptManager 类的引用。事实上对page.ClientScript的引用都是对该类的操作

 

js传递中的引号的解决办法:为了减少出问题的机会,尽量用转义字符\,把alert('')里面的"'"换成\".例如:

Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "message", string.Format("<script>alert(\"{0}\")</script>", ex.Message));

 

构件js字符串时,尽量不用简单字符粘贴,最好使用StringBuilder对象,例如:

protected void Page_Load(object sender, EventArgs e)
    
{
        
string arrayName = "testArray";
        
int[] array =new int{1,2,3 };
         ScriptManager scriptManager
= new ScriptManager();
         scriptManager.RegisterArrayDeclaration(
this, arrayName, array);

         StringBuilder csText
= new StringBuilder();
         csText.Append(
"function doSum() {");
         csText.Append(
"var arrSum=");
         csText.Append(
"parseInt(" + arrayName + "[0])+");
         csText.Append(
"parseInt(" + arrayName + "[1])+");
         csText.Append(
"parseInt(" + arrayName + "[2]);");
         csText.Append(
"alert(arrSum);");
         csText.Append(
"}");

         scriptManager.RegisterClientScriptBlock(
this, "Sum", csText.ToString());
         btnDoSum.OnClientClick
= "doSum(); return false";

     }

 

[ 本帖最后由 小红马 于 2008-6-29 09:51 编辑 ]

TOP