在 ASP.NET 页面中包括客户端脚本的方法
来源:互联网 发布:出租车轨迹数据集下载 编辑:程序博客网 时间:2024/09/21 09:03
http://www.cnblogs.com/lazeman/archive/2011/01/21/1941473.html
主要包括以下三种方法:
以静态方式将客户端脚本包括在含有代码或使用 include 特性引用 JavaScript (.js) 文件的 script 块中。 使用此选项,可在脚本块或 JavaScript 文件中插入无需动态创建,亦不需要 Microsoft AJAX Librarc y 提供的附加 AJAX 功能的客户端脚本。
使用 ClientScriptManager 类以动态方式创建客户端脚本并添加至 ASP.NET 网页。 如果要创建的脚本依赖仅在运行时才可用的信息,请使用此选项。
如果您计划利用 ASP.NET 的 AJAX 功能,则可以使用 ScriptManager 服务器控件管理客户端脚本文件。 ScriptManager 服务器控件还可以确保,浏览器在运行您的脚本之前已加载 Microsoft AJAX Library。
ClientScriptManager
ClientScriptManager 类用于管理客户端脚本并将它们添加到 Web 应用程序中。 可以从 Page 对象的 ClientScript 属性获取对 ClientScriptManager 类的引用。
通过在网页的 HTML 标记中包含脚本,可以声明方式向网页添加客户端脚本。 然而,有些情况下需要动态添加客户端脚本。 若要动态添加脚本,根据您想添加脚本的时间及方式,使用 RegisterClientScriptBlock 方法、RegisterClientScriptInclude 方法、RegisterStartupScript 方法或 RegisterOnSubmitStatement 方法
方法
说明
RegisterClientScriptBlock
向页的顶部添加一个脚本块。 以字符串形式创建脚本,然后将其传递给方法,方法再将脚本添加到页中。 可以使用此方法将任何脚本插入到页中。 请注意,脚本可能在所有元素完成之前呈现到页中;因此,您可能无法从脚本中引用页上的所有元素。
RegisterClientScriptInclude
与 RegisterClientScriptBlock 方法类似,但此方法将添加引用外部 .js 文件的脚本块。 包含文件在任何其他动态添加的脚本之前添加;因此,您可能无法引用页上的某些元素。
RegisterStartupScript
向页中添加一个脚本块,该脚本块在页完成加载后引发页的 onload 事件之前执行。 该脚本通常不创建为事件处理程序或函数;它通常只包含要执行一次的语句。
RegisterOnSubmitStatement
添加响应页的 onsubmit 事件而执行的脚本。 该脚本在提交页之前执行,允许您取消提交。
在期望不执行回发而从客户端运行服务器代码的情况下,可以使用 ClientScriptManager 类来调用客户端回调。 这称为对服务器执行带外回调。 在客户端回调中,客户端脚本函数向 ASP.NET 网页发送异步请求。 网页修改其正常生命周期来处理回调。 使用 GetCallbackEventReference 方法获取一个对客户端函数的引用,当调用该函数时,它将启动一个对服务器端事件的客户端回调。
实现客户端回调的 ASP.NET 网页
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientCallback.aspx.cs" Inherits="ClientCallback" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head id="Head1" runat="server"> <title>Client Callback Example</title> <script type="text/ecmascript"> function LookUpStock() { var lb = document.getElementById("ListBox1"); var product = lb.options[lb.selectedIndex].text; CallServer(product, ""); } function ReceiveServerData(rValue) { document.getElementById("ResultsSpan").innerHTML = rValue; } </script></head><body> <form id="form1" runat="server"> <div> <asp:ListBox ID="ListBox1" Runat="server"></asp:ListBox> <br /> <br /> <button type="Button" onclick="LookUpStock()">Look Up Stock</button> <br /> <br /> Items in stock: <span id="ResultsSpan" runat="server"></span> <br /> </div> </form></body></html>
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;publicpartialclass ClientCallback : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler{ protected System.Collections.Specialized.ListDictionary catalog; protected String returnValue; protectedvoid Page_Load(object sender, EventArgs e) { String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context"); String callbackScript; callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + ";}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true); catalog = new System.Collections.Specialized.ListDictionary(); catalog.Add("monitor", 12); catalog.Add("laptop", 10); catalog.Add("keyboard", 23); catalog.Add("mouse", 17); ListBox1.DataSource = catalog; ListBox1.DataTextField = "key"; ListBox1.DataBind(); } publicvoid RaiseCallbackEvent(String eventArgument) { if (catalog[eventArgument] == null) { returnValue = "-1"; } else { returnValue = catalog[eventArgument].ToString(); } } public String GetCallbackResult() { return returnValue; }}
该网页模拟一个数据库查找,以确定一系列产品(监视器、键盘等)的供货数量或库存数量。
publicvoid 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); } }
以下是这几种方法的说明:
- 在 ASP.NET 页面中包括客户端脚本的方法
- asp.net客户端脚本调用页面方法
- Asp.net 中,在服务端向客户端写脚本的常用方法
- Asp.net 中,在服务端向客户端写脚本的常用方法
- 在Asp.net中,客户端脚本调用Web service的2种方法。
- 在asp.net中使用客户端脚本
- 在asp.net中使用客户端脚本
- ASP.NET页面在客户端浏览器中显示进度
- 如何在ASP.net页面中,客户端播放音频
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?(测试成功)
- 对于长时间装载的ASP.NET页面,如何在客户端浏览器中显示进度?
- 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?
- 开发中常用的sql搜集
- 魔
- Delphi控件dpk的御载
- X3C通用插件框架已在公网开源(转载)
- attack vector 的定义
- 在 ASP.NET 页面中包括客户端脚本的方法
- 贴片电阻、贴片电容规格、封装、尺寸·功率
- 程序员的美:极致与疯狂
- 监视文件夹的文件变更
- EXCEL Export
- KETTLE效率小测试
- EXCEL
- css的cursor属性
- GRASP——General Responsiblity Assignment Software Patterns