JavaScript 與 ASP.NET 2.0

來源:互聯網
上載者:User

將 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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.