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

 

posted on 2010-06-20 21:51  黄小二  阅读(849)  评论(0编辑  收藏  举报