JavaScript 与 ASP.NET 2.0
将 JavaScript 置于代码中
将 JavaScript 放到单独的文件 (.js) 中
与 UpdatePanel 控件协作注册部分页面更新兼容脚本
JavaScript 函数中执行 C# 代码中的函数
将 JavaScript 置于代码中
既然我们可以在 HTML 元素内部嵌入部分 JavaScript,甚至可以以动态方式使用 JavaScript 和 Web 服务器控件,那么如何将全部 JavaScript 函数置于您的代码中呢?
在 ASP.NET 2.0 之前,您需要使用 RegisterStartupScript 和 RegisterClientScriptBlock 方法。现在,这两个方法已被淘汰。在 ASP.NET 1.x 中注册脚本的两种可能方法均需要使用一组关键字/脚本参数。由于涉及到了两个独立的方法,因此极有可能会出现一些关键字名称冲突。Page.ClientScript 属性本身就可以完成所有的脚本注册,从而使您的代码少出错。
将 JavaScript 放到单独的 .js 文件中,并使用 RegisterStartupScript 和 RegisterClientScriptBlock 方法将 JavaScript 嵌入到页面中。使用 HtmlGenericControl 的功能将控件特定的 JavaScript 部署到 ASP.NET 页面中也是相当容易的。
Page.ClientScript.RegisterStartupScript() 方法
在页面的 <form> 开始标记之后呈现一个 script 元素。
-
RegisterStartupScript (type, key, script)
-
RegisterStartupScript (type, key, script, script tag specification)
在上例中,您指定了类型 Me.GetType()、关键字及包含的脚本,然后是一个值为 True 的布尔值(以便 .NET 自动使用 <script> 标记将脚本嵌入 ASP.NET 页面中)。应为页面上的所有 JavaScript 指定唯一的关键字,这一点十分重要(这可通过该方法中要求的 key 参数来实现)。如果多个 JavaScript 具有相同的关键字名称,则只会在页面中嵌入第一个 JavaScript。
Page.ClientScript.RegisterClientScriptBlock() 方法
在页面的 </form> 结束标记之前呈现启动脚本块。
返回页首
强烈建议将 JavaScript 函数放到单独的文件中(.js 文件)。一旦它们位于单独的文件中,并且是某个项目的一部分,即可使用某些曾经介绍过的方法将该文件导入到页面中。例如,可通过以下代码将 .js 文件包括到 ASP.NET 页面中:
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", "MyJavaScriptFile.js");
一旦将 .js 文件导入到了 ASP.NET 页面中,即可像以前一样调用任何 JavaScript 函数。如果要管理 JavaScript 函数,并将它们与其他 ASP.NET 页面的逻辑分离,这是个不错的方法。也可使用该方法很容易地在多个 ASP.NET 页面中使用相同的 JavaScript 函数。
返回页首
与 UpdatePanel 控件协作注册部分页面更新兼容脚本
为了便于在 UpdatePanel 控件中使用而呈现脚本(确保 JavaScript 在 UpdatePanel 里不失效),则应确保调用 ScriptManager 控件的方法。
- RegisterClientScriptBlock 在页面的 <form> 开始标记之后呈现一个 script 元素。
- RegisterStartupScript 在页面的 </form> 结束标记之前呈现启动脚本块。
它比Page上的脚本注册方法多一个参数,也就是这段脚本是为哪个控件注册的。如果该控件在本次更新的UpdatePanel内,脚本会生效;如果不是,脚本无效。
返回页首
JavaScript 函数中执行 C# 代码中的函数
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2、在前台写一个js函数,内容为document.getElementById("btn1").click(); 3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:1、函数声明为public 后台代码(把public改成protected也可以) public string ss() { return("a"); } 2、在html里用<%=fucntion()%>可以调用 前台脚本 <script language=javascript> var a = "<%=ss()%>"; alert(a); </script>
方法三:1、<script language="javascript"> <!- - function __doPostBack(eventTarget, eventArgument) { var theForm = document.Form1; //指runat=server的form theForm.__EVENTTARGET.value = eventTarget; theFrom.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } --> </script> <input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">
方法四:<script language="javascript"> function SubmitKeyClick() { if (event.keyCode == 13) { event.cancelBubble = true; event.returnValue = false; document.all.FunName.value="你要调用的函数名"; document.form[0].submit(); } } </script> <INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text"> <input type="hidden" name="FunName"> 〈!--用来存储你要调用的函数 --〉 在.CS里有: public Page_OnLoad() { if (!Page.IsPost()) {
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:""; //根据传回来的值决定调用哪个函数 switch(strFunName) { case "enter()": enter() ; //调用该函数 break; case "其他": //调用其他函数 break; default: //调用默认函数 break; } } } public void enter() { //……比如计算某值 }
引用:
将 JavaScript 与 ASP.NET 2.0 配合使用 http://msdn.microsoft.com/zh-cn/library/aa479390.aspx#XSLTsection139121120120
ScriptManager 类 http://msdn.microsoft.com/zh-cn/library/system.web.ui.scriptmanager.aspx
如何让JAVASCRIPT脚本在UpdatePanel中不失效 http://social.microsoft.com/forums/zh-CN/295/thread/ba3620f1-7418-40ba-b7af-46d98cec2e4a
如何实现js调用服务器端方法 http://topic.csdn.net/u/20080907/13/fdfcdd60-946e-4fe5-a97a-d6c5ce198a81.html