您的位置:首页 > 其它

转)服务器端注册脚本Page.ClientScript.RegisterStartupScript,RegisterClientScriptBlock,RegisterStartupScript,Re

2012-03-05 17:54 579 查看
Page.ClientScript.RegisterStartupScript()

使用类型、键、脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本。

参数

type

要注册的启动脚本的类型。

key

要注册的启动脚本的键。

script

要注册的启动脚本文本。

addScriptTags

指示是否添加脚本标记的布尔值.

备注:

启动脚本由它的键和类型唯一标识。具有相同的键和类型的脚本被视为重复脚本。只有使用给定的类型和键对的脚本才能使用该页面进行注册。试图注册一个已经注册的脚本不会创建重复的脚本。

调用 IsStartupScriptRegistered 方法以确定具有给定的键和类型对的启动脚本是否已经注册,从而避免不必要的添加脚本尝试。

在 RegisterStartupScript 方法的此重载中,使用 addScriptTags 参数可指示 script 参数中提供的脚本是否包装在 <script> 元素块中。将 addScriptTags 设置为 true 指示脚本标记将自动添加。

RegisterStartupScript 方法添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行。

示例

<%@ Page Language="C#"%>

<script runat="server">

public void Page_Load(Object sender, EventArgs e)

{

// Define the name and type of the client scripts on the page.

String csname1 = "PopupScript";

String csname2 = "ButtonClickScript";

Type cstype = this.GetType();

// Get a ClientScriptManager reference from the Page class.

ClientScriptManager cs = Page.ClientScript;

// Check to see if the startup script is already registered.

if (!cs.IsStartupScriptRegistered(cstype, csname1))

{

String cstext1 = "alert('Hello World');";

cs.RegisterStartupScript(cstype, csname1, cstext1, true);

}

// Check to see if the client script is already registered.

if (!cs.IsClientScriptBlockRegistered(cstype, csname2))

{

StringBuilder cstext2 = new StringBuilder();

cstext2.Append("<script type=text/javascript> function DoClick() {");

cstext2.Append("Form1.Message.value='Text from client script.'} </");

cstext2.Append("script>");

cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);

}

}

</script>

<html>

<head>

<title>ClientScriptManager Example</title>

</head>

<body>

<form id="Form1"

runat="server">

<input type="text" id="Message"> <input type="button" value="ClickMe" onclick="DoClick()">

</form>

</body>

</html>

用Page.ClientScript.RegisterClientScriptBlock 和

Page.ClientScript.RegisterStartupScript:区别:

c#

1.<%@ Page Language=”C#” %>

2.<script runat=”server”>

3.protected void Page_Load(object sender, EventArgs e)

4.{

5.string myScript = @”function AlertHello() { alert(‘Hello ASP.NET’); }”;

6.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

7.“MyScript”, myScript, true);

8.}

9.</script>

运行结果如下:

1.<html xmlns=”http://www.w3.org/1999/xhtml” >

2.<head><title>

3.Adding JavaScript

4.</title></head>

5.<body>

6.<form method=”post” action=”JavaScriptPage.aspx” id=”form1”>

7.<div>

8.<input type=”hidden” name=”__VIEWSTATE”

9.value=”/wEPDwUKMTY3NzE5MjIyMGRkiyYSRMg+bcXi9DiawYlbxndiTDo=” />

10.</div>

11.<script type=”text/javascript”>

12.<!--

13.function AlertHello() { alert(‘Hello ASP.NET’); }// -->

14.</script>

15.<div>

16.<input type=”submit” name=”Button1” value=”Button” onclick=”AlertHello();”

17.id=”Button1” />

18.</div>

19.</form>

20.</body>

21.</html>

使用Page.ClientScript.RegisterStartupScript

RegisterStartupScript 方法与RegisterClientScriptBloc

k方法最大的不同是:RegisterStartupScript 把script放置在 ASP.NET page的底部,而RegisterClientScriptBlock把script放置在ASP.NET page的顶部。

如果你的页面中有如下代码:

1.<asp:TextBox ID=”TextBox1” Runat=”server”>Hello ASP.NET</asp:TextBox>

1.protected void Page_Load(object sender, EventArgs e)

2.{

3.string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;

4.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

5.“MyScript”, myScript, true);

6.}

此页面运行时会报错,原因是JavaScript function先于text box被安放于浏览器。因此JavaScript function找不到TextBox1。

1.protected void Page_Load(object sender, EventArgs e)

2.{

3.string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;

4.Page.ClientScript.RegisterStartupScript(this.GetType(),

5.“MyScript”, myScript, true);

6.}

这段代码把JavaScript function放置于ASP.NET page底部,因此JavaScript运行时它能找到TextBox1。

使用Page.ClientScript.RegisterClientScriptInclude

许多开发者把JavaScript放置在.js文件中,使用RegisterClientScriptInclude方法可以注册.js文件中的JavaScript。

1.string myScript = “myJavaScriptCode.js”

2.Page.ClientScript.RegisterClientScriptInclude(“myKey”, myScript);

这将在ASP.NET页面产生如下结构:

<script src=”myJavaScriptCode.js” type=”text/javascript”></script>

我们在页面加载的时候在后台需要从后台获取数据转换为js对象(Json),然后注册到页面脚本上。

那我们就会用到这两个对象。
RegisterStartupScript 方法是将 JavaScript嵌入到ASP.NET页面的底部,恰好位于关闭元素 </form>的前面。
RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面。
同样还有 System.Web.UI.ScriptManager.RegisterStartupScript();
ScriptManager.RegisterClientScriptBlock();
一样的区别。
System.Web.UI.ScriptManger.RegisterStartupScript(this,GetType(),”onTest”,”<script>alert(‘test!’)</script>”,false);

ClientScript.RegisterClientScriptBlock(this.GetType(),”fsdfs”,”var curEmpID=”+UserInfo.EmployeeID.ToString(),true);
三、aspx页面刷新的几种方法
Btn_Click:
第一种:Response.Redirect(Request.Url.ToString());
第二种:Response.Write(“<script language=javascript>window.location.href=document.URL;</script>”);
第三种:
Response.AddHeader(“Refresh”,”0”);
四、ScriptManager.RegisterStartupScript 方法
向 ScriptManager 控件注册一个启动脚本块并将该脚本块添加到页面中。
RegisterStartupScript(Control,Type,String,String,Boolean);
使用ScriptManager 控件为UpdatePanel 中的某个控件注册一个启动脚本块,并将该脚本块添加到页面中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐