JavaScript 与 ASP.NET 2.0

将 JavaScript 置于代码中
将 JavaScript 放到单独的文件 (.js) 中
与 UpdatePanel 控件协作注册部分页面更新兼容脚本
JavaScript 函数中执行 C# 代码中的函数 

 

将 JavaScript 置于代码中

      既然我们可以在 HTML 元素内部嵌入部分 JavaScript,甚至可以以动态方式使用 JavaScript 和 Web 服务器控件,那么如何将全部 JavaScript 函数置于您的代码中呢?

      在 ASP.NET 2.0 之前,您需要使用 RegisterStartupScriptRegisterClientScriptBlock 方法。现在,这两个方法已被淘汰。在 ASP.NET 1.x 中注册脚本的两种可能方法均需要使用一组关键字/脚本参数。由于涉及到了两个独立的方法,因此极有可能会出现一些关键字名称冲突。Page.ClientScript 属性本身就可以完成所有的脚本注册,从而使您的代码少出错。

      将 JavaScript 放到单独的 .js 文件中,并使用 RegisterStartupScriptRegisterClientScriptBlock 方法将 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) 中

      强烈建议将 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

 

你可能感兴趣的:(JavaScript)