Professional ASP.NET 2.0之使用JavaScript处理Pages和Server Controls

本文介绍了在 ASP.NET 中三种不同的 JavaScript 注册方法:RegisterClientScriptBlock、RegisterStartupScript 和 RegisterClientScriptInclude,并通过示例代码说明了它们的用法及区别。
1.使用 Page.ClientScript.RegisterClientScriptBlock
Listing 4-10: Using the RegisterClientScriptBlock method
VB
None.gif<%@ Page Language=”VB” %>
None.gif
<script runat=”server”>
ExpandedBlockStart.gifContractedBlock.gif
Protected Sub Page_Load()Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs)
ExpandedSubBlockStart.gifContractedSubBlock.gif
Dim myScript As String = “Function AlertHello()function AlertHello() { alert(‘Hello ASP.NET’); }”
InBlock.gifPage.ClientScript.RegisterClientScriptBlock(
Me.GetType(), “MyScript”, _
InBlock.gifmyScript, 
True)
ExpandedBlockEnd.gif
End Sub

None.gif
</script>
None.gif
<html xmlns=”http://www.w3.org/1999/xhtml” >
None.gif
<head runat=”server”>
None.gif
<title>Adding JavaScript</title>
None.gif
</head>
None.gif
<body>
None.gif
<form id=”form1” runat=”server”>
None.gif
<div>
None.gif
<asp:Button ID=”Button1” Runat=”server” Text=”Button”
None.gifOnClientClick
=”AlertHello()” />
None.gif
</div>
None.gif
</form>
None.gif
</body>
None.gif
</html>
c#
None.gif<%@ Page Language=”C#” %>
None.gif
<script runat=”server”>
None.gif
protected void Page_Load(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif
string myScript = @”function AlertHello() dot.gif{ alert(‘Hello ASP.NET’); }”;
InBlock.gifPage.ClientScript.RegisterClientScriptBlock(
this.GetType(),
InBlock.gif“MyScript”, myScript, 
true);
ExpandedBlockEnd.gif}

None.gif
</script>

运行结果如下:
None.gif<html xmlns=”http://www.w3.org/1999/xhtml” >
None.gif
<head><title>
None.gifAdding JavaScript
None.gif
</title></head>
None.gif
<body>
None.gif
<form method=”post” action=”JavaScriptPage.aspx” id=”form1”>
None.gif
<div>
None.gif
<input type=”hidden” name=”__VIEWSTATE”
None.gif
value=”/wEPDwUKMTY3NzE5MjIyMGRkiyYSRMg+bcXi9DiawYlbxndiTDo=” />
None.gif
</div>
ExpandedBlockStart.gifContractedBlock.gif
<script type=”text/javascript”>dot.gif
InBlock.gif
<!--
ExpandedSubBlockStart.gifContractedSubBlock.gif
function AlertHello() dot.gif{ alert(‘Hello ASP.NET’); }// -->
None.gif
</script>
None.gif
<div>
None.gif
<input type=”submit” name=”Button1” value=”Button” onclick=”AlertHello();”
None.gif
id=”Button1” />
None.gif
</div>
None.gif
</form>
None.gif
</body>
None.gif
</html>

2.使用Page.ClientScript.RegisterStartupScript

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

如果你的页面中有如下代码:
None.gif<asp:TextBox ID=”TextBox1” Runat=”server”>Hello ASP.NET</asp:TextBox>
None.gif

Listing 4-11: Improperly using the RegisterClientScriptBlock method
VB
ExpandedBlockStart.gifContractedBlock.gifProtected Sub Page_Load()Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs)
InBlock.gif
Dim myScript As String = “alert(document.forms[0][‘TextBox1’].value);”
InBlock.gifPage.ClientScript.RegisterClientScriptBlock(
Me.GetType(), “myKey”, myScript, _
InBlock.gif
True)
ExpandedBlockEnd.gif
End Sub
c#
None.gifprotected void Page_Load(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
InBlock.gifPage.ClientScript.RegisterClientScriptBlock(
this.GetType(),
InBlock.gif“MyScript”, myScript, 
true);
ExpandedBlockEnd.gif}
此页面运行时会报错,原因是JavaScript function先于text box被安放于浏览器。因此JavaScript function找不到TextBox1。

Listing 4-12: Using the RegisterStartupScript method
VB

ExpandedBlockStart.gifContractedBlock.gifProtected Sub Page_Load()Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs)
InBlock.gif
Dim myScript As String = “alert(document.forms[0][‘TextBox1’].value);”
InBlock.gifPage.ClientScript.RegisterStartupScript(
Me.GetType(), “myKey”, myScript, _
InBlock.gif
True)
ExpandedBlockEnd.gif
End Sub
c#
None.gifprotected void Page_Load(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
InBlock.gifPage.ClientScript.RegisterStartupScript(
this.GetType(),
InBlock.gif“MyScript”, myScript, 
true);
ExpandedBlockEnd.gif}
这段代码把JavaScript function放置于ASP.NET page底部,因此JavaScript运行时它能找到TextBox1。

3.使用Page.ClientScript.RegisterClientScriptInclude
许多开发者把JavaScript放置在.js文件中,使用RegisterClientScriptInclude方法可以注册.js文件中的JavaScript。
Listing 4-13: Using the RegisterClientScriptInclude method
VB

None.gifDim myScript As String = “myJavaScriptCode.js”
None.gifPage.ClientScript.RegisterClientScriptInclude(“myKey”, myScript)
c#
None.gifstring myScript = “myJavaScriptCode.js”
None.gifPage.ClientScript.RegisterClientScriptInclude(“myKey”, myScript);
这将在ASP.NET页面产生如下结构:
<script src=”myJavaScriptCode.js” type=”text/javascript”></script>

转载于:https://www.cnblogs.com/zhhui/archive/2006/03/22/355855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值