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

来源:互联网 发布:golang selenium爬虫 编辑:程序博客网 时间:2024/04/25 15:25
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 中的某个控件注册一个启动脚本块,并将该脚本块添加到页面中。

原创粉丝点击