精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

看看如何透過JavaScript調用C#函數

開發 后端
本文介紹了透過JavaScript調用C#函數,實現高速訪問數據庫、查找對應多個字段的值等相關知識。

本帖并無高來高去的高深技術,但提供一個做 ASP.NET 項目時,很實用的 Ajax 示例下載。透過 AJAX.NET 的功能,改善舊式 Callback 寫法的缺點,讓用戶在一或多個 TextBox 輸入完查找條件、鼠標離開并觸發 onBlur 事件時,透過JavaScript 調用C#自定義類的函數,實現高速訪問數據庫、查找對應多個字段的值。

之前我曾寫了一篇「用 ASP.NET Callback 和 JavaScript 高速訪問數據庫」,并提供示例下載,內容是用 Callback 異步調用技術 (ASP.NET AJAX 還沒出現前,微軟提供的過渡技術),讓 Client-side (JavaScript) 能和 Server-side (.NET CLR) 直接溝通,讓用戶在 TextBox 失去焦點、觸發 onBlur 事件時,能透過 C# 自定義類的函數,以相當高的效率訪問數據庫并返回值。但該示例有兩個缺點:

只能透過固定單一個內附的 RaiseCallbackEvent 函數,去訪問數據庫。當頁面上有多個 TextBox 同時要實現相同功能時,程序撰寫上會很困難。

無法透過 try-catch-finally block 捕捉錯誤信息。當發生錯誤時,也無法提供相關信息給用戶或程序員。

因為在 ASP.NET 項目中常會用到此一功能,因此日前我用 AJAX.NET 這套 free library 重寫了一個示例 (相關的 dll 已內附), 下載地址及功能如下:

本帖的示例代碼下載點:

http://files.cnblogs.com/WizardWu/090828.zip

(執行本示例,需要 SQL Server 的 Northwind 數據庫,以及 VS 2008 或 IIS)

此示例功能:

如下圖 1,在***個 TextBox1 輸入 EmployeeID,鼠標離開 TextBox1 失去焦點、觸發 onBlur 事件時,會自動高速訪問數據庫,取得該筆記錄的另外兩個字段,顯示在下方的兩個 TextBox 中。

如下圖 2,當用戶輸入不合理的 EmployeeID 時,會提示錯誤信息,并清空另外兩個 TextBox 里既有的文字。

當用戶輸入不存在于數據表 Employees 的 EmployeeID 時,會提示錯誤信息,并清空另外兩個 TextBox 里既有的文字。

當用戶手動清空 TextBox1,鼠標離開 TextBox1 失去焦點、觸發 onBlur 事件時,會清空另外兩個 TextBox 里既有的文字。 

透過JavaScript調用C#函數圖 1 

透過JavaScript調用C#函數圖 1 網站項目中常用到的功能。以本示例的做法,不論網頁上有多少個 TextBox 需要此功能,都不會相互干擾

 透過JavaScript調用C#函數圖 2 

透過JavaScript調用C#函數圖 2 輸入不合理或錯誤類型的 EmployeeID,JavaScript 接收到 C# 返回的錯誤信息

關鍵代碼如下:

  1. Default.aspx.cs   
  2.  
  3. public partial class _Default : System.Web.UI.Page   
  4. {  
  5.     protected void Page_Load(object sender, EventArgs e)  
  6.     {  
  7.         //設置 TextBox 的 OnBlur 事件被觸發時,所要調用的 JavaScript 函數  
  8.         this.TextBox1.Attributes["onblur"] = "getEmployeeInfo('TextBox1', 'TextBox2', 'TextBox3');";  
  9.         this.TextBox4.Attributes["onblur"] = "getProductInfo('TextBox4', 'TextBox5', 'TextBox6');";  
  10.  
  11.         //設置在 JavaScript 文件中,所能調用的 C# 自定義類的名稱   
  12.         Ajax.Utility.RegisterTypeForAjax(typeof(MyClass01));  
  13.     }  
  14. }  

我們看到上方,透過 RegisterTypeForAjax 函數,可向 AJAX.NET 注冊我們寫的 C# 自定義類 MyClass01。接著 AJAX.NET 會瀏覽這個自定義類,里面標示有 AjaxMethodAttribute 的函數,如下方代碼中的 getEmployeeInfo 和 getProductInfo 函數,我們并在這兩個函數里,實際去訪問數據庫并取回需要的一或多個字段的值。

  1. App_Code/MyClass01.cs  
  2. public class MyClass01  
  3. {  
  4.     public static string strConnString = WebConfigurationManager.ConnectionStrings["ConnString_SqlClient"].ConnectionString;  
  5.  
  6.     //由 EmployeeID (如: 1, 2 ,3 , ...),去數據庫取出他的 LastName、Title  
  7.     [Ajax.AjaxMethod()]       //告知 Ajax 封裝類,為此方法創建一個 JavaScript 代理,這樣才能被客戶端調用  
  8.     public string getEmployeeInfo(string strEmployeeID)  
  9.     {  
  10.         string strResult = string.Empty;  
  11.         string strSql = "SELECT LastName, Title FROM EMPLOYEES WHERE EmployeeID = @EmployeeID";  
  12.  
  13.         using (SqlConnection conn = new SqlConnection(strConnString))  
  14.         {  
  15.             conn.Open();  
  16.             if (conn.State == ConnectionState.Open)  
  17.             {  
  18.                 using (SqlCommand cmd = new SqlCommand(strSql, conn))  
  19.                 {  
  20.                     cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = strEmployeeID.Trim();  
  21.  
  22.                     //若確定要捉的記錄只有一筆,可加上此 ADO.NET 的「SingleRow」參數,以優化性能、節省系統資源  
  23.                     using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))  
  24.                     {  
  25.                         if (dr.Read())  
  26.                         {  
  27.                             strResult = dr[0].ToString() + "§" + dr[1].ToString();  
  28.                         }  
  29.                     }  
  30.                 }  
  31.             }  
  32.         }  
  33.  
  34.         return strResult;     //strResult = "result1§result2";   //返回值為用 "§" 字符所分割的一或多個字符串  
  35.     }  
  36.  
  37.  
  38.     //由 ProductID (如: 1, 2 ,3 , ...),去數據庫取出他的 ProductName、QuantityPerUnit  
  39.     [Ajax.AjaxMethod()]       //告知 Ajax 封裝類,為此方法創建一個 JavaScript 代理,這樣才能被客戶端調用  
  40.     public string getProductInfo(string strProductID)  
  41.     {  
  42.         //...中間略...  
  43.     }  
  44.  
  45. //end of class 

如下,onBlur 事件被觸發時,會在 JavaScript 里調用 C# 的同名函數,并從數據庫里取得返回值。

  1. js/MyJs01.js  
  2. //由 EmployeeID (如: 1, 2 ,3 , ...),去數據庫取出他的 LastName、Title  
  3. function getEmployeeInfo(TextBox1, TextBox2, TextBox3) {  
  4.  
  5.     //調用 App_Code 文件夾里,C# 自定義類的 getEmployeeInfo 函數  
  6.     var response = MyClass01.getEmployeeInfo(document.getElementById(TextBox1).value);  
  7.  
  8.     //response 為從 C# 自定義類里的函數所傳回來的,由一或多個 "§" 字符所組成的一個字符串  
  9.     if ((response.value == null) || (response.value.length == 0)) {  //若用戶輸入「不合理的字符」或「無對應數據的ID號碼」  
  10.         alert('數據庫里查無數據 !');  
  11.         document.getElementById(TextBox2).value = "";  
  12.         document.getElementById(TextBox3).value = "";  
  13.     }  
  14.     else if (response.value.length > 0) {      //若數據庫里有查找到對應的數據  
  15.         var strArrResult = response.value.split("§");  
  16.         if (strArrResult[0].length > 0)  
  17.             document.getElementById(TextBox2).value = strArrResult[0];  
  18.         if (strArrResult[1].length > 0)  
  19.             document.getElementById(TextBox3).value = strArrResult[1];  
  20.     }  

如下,在 web.config 里添加配置,讓所有 ajax/*.ashx 的請求,改由 Ajax.PageHandlerFactory 產生的 HTTP Handler 處理,而不再由默認的 System.Web.UI.PageHandlerFactory 處理程序工廠 [9] 來處理。

  1. web.config  
  2. < system.web> 
  3.     < httpHandlers> 
  4.         < add verb="POST,GET" path="ajax/*.ashx" 
  5.            type="Ajax.PageHandlerFactory, Ajax" /> 
  6.     < /httpHandlers> 
  7. < /system.web> 

因為此一需求我在 ASP.NET 項目常遇到,因此特地整理成一篇文章。若有網友知道 ASP.NET AJAX 3.5 有更好的做法,亦請留言告知。

到這里,透過JavaScript調用C#函數的相關內容就介紹完了。

【編輯推薦】

  1. 學習C#消息:循序漸進
  2. 解惑答疑:C#委托和事件
  3. 學習C#實現HTTP協議:多線程文件傳輸
  4. 進一步接觸C#委托與事件
  5. 淺析四種C#轉換的區別
責任編輯:book05 來源: cnblogs
相關推薦

2009-08-26 15:09:57

C# Hook

2009-07-31 14:26:38

JavaScript函C#函數

2009-08-19 14:26:58

C# JavaScri

2009-08-03 13:34:57

C#調用Windows

2009-08-14 09:15:28

C#調用構造函數

2009-08-25 10:59:00

C#調用函數顯示值

2009-08-07 17:22:36

C#調用dll導出函數

2009-07-31 16:12:10

Windows APIC#

2009-08-05 09:30:39

C#調用DLL函數

2009-08-05 09:40:02

C#調用DLL函數

2010-01-28 13:35:41

調用C++函數

2009-08-17 16:18:47

C#調用CreateO

2009-07-31 14:47:22

JavaScript函C#

2009-08-13 18:36:36

C#繼承構造函數

2009-08-31 10:28:00

C# CreateEm

2009-10-23 11:31:05

CLR Via C#調

2009-08-19 04:16:00

C#代碼與#函數相互調

2009-08-31 10:14:49

C# CreateEm

2009-08-31 09:59:13

C# CreateEm

2009-08-13 18:26:35

C#繼承構造函數
點贊
收藏

51CTO技術棧公眾號

亚洲一卡二卡在线| 亚洲av永久无码精品| 91.xxx.高清在线| 日本色综合中文字幕| 深夜福利一区二区| 天堂av手机在线| av中文在线资源| 久久色成人在线| 国产精品香蕉av| jizz日本在线播放| 66精品视频在线观看| 欧美视频在线观看免费| 亚洲一区二区不卡视频| 韩国av在线免费观看| 美女国产一区| 久久精品91久久香蕉加勒比| 一级国产黄色片| 欧美日韩va| 黄色一区二区在线观看| 在线视频不卡一区二区| 亚洲人成色777777老人头| 蜜臀久久99精品久久久久宅男 | 岛国av一区二区| 一区精品在线| 女人偷人在线视频| 成人国产亚洲欧美成人综合网| 国产福利精品视频| 国产在线成人精品午夜| 91日韩免费| 亚洲无限av看| 国产一级黄色录像| 亚洲tv在线| 在线区一区二视频| 国产69精品久久久久久久| 成人在线影视| 国产精品初高中害羞小美女文| 国产伦精品一区| 国产成人精品无码高潮| 麻豆免费看一区二区三区| 欧美亚洲激情在线| 久久精品www人人爽人人| 久久久综合色| 亚洲色图第一页| 噜噜噜在线视频| 久久精品福利| 精品国产自在久精品国产| 日本在线观看视频一区| 久久亚洲国产精品尤物| 在线视频欧美精品| 农村妇女精品一二区| 国产乱码午夜在线视频| 亚洲国产精品人人做人人爽| 国产免费裸体视频| 在线观看中文字幕的网站| 一色屋精品亚洲香蕉网站| 日韩高清dvd| 国产一级片在线| 久久久亚洲国产美女国产盗摄 | 欧美亚洲精品在线| 亚洲男人天堂古典| 人妻丰满熟妇av无码久久洗澡 | 一区二区三区久久网| 国产对白叫床清晰在线播放| 国产亚洲精品中文字幕| 欧洲在线视频一区| 国产精品久久久久一区二区国产| 国产日韩影视精品| 四虎一区二区| 中文日本在线观看| 亚洲欧美激情在线| 欧美国产日韩激情| 蜜臀久久精品| 91黄色在线观看| 午夜精品中文字幕| 国产精品一级在线观看| 日韩欧美电影一二三| 亚洲av无码专区在线播放中文| 高清精品xnxxcom| 日韩精品视频免费| 国产又黄又粗视频| 91精品国产麻豆国产在线观看| 久久夜色精品国产亚洲aⅴ| 免费一级片在线观看| 亚洲国产一区二区三区高清| 奇门遁甲1982国语版免费观看高清 | 手机精品视频在线| 2020国产精品极品色在线观看| 亚洲第一区第二区| 六月婷婷七月丁香| 91青青国产在线观看精品| 欧美裸体男粗大视频在线观看| 国产精品9191| 三级亚洲高清视频| 91色p视频在线| 少妇高潮一区二区三区69| 久久久精品中文字幕麻豆发布| 曰韩不卡视频| 曰本三级在线| 在线一区二区三区| wwwww在线观看| 国内黄色精品| 精品视频9999| 天天干天天操天天操| 国产美女娇喘av呻吟久久| 精品网站在线看| 久久五月精品| 色综合久久天天综合网| 国产在线视频三区| 国产精品中文字幕亚洲欧美| 欧美巨乳在线观看| 日本一本在线观看| 国产.欧美.日韩| 亚洲综合欧美日韩| 综合另类专区| 精品国产一区二区三区久久影院| 欧美丰满美乳xxⅹ高潮www| 尹人成人综合网| 成人疯狂猛交xxx| 日韩大片b站免费观看直播| 亚洲免费伊人电影| 人人干人人视频| 亚洲成aⅴ人片久久青草影院| 欧美成人激情图片网| 波多野结衣激情视频| 成人av第一页| mm131午夜| 懂色aⅴ精品一区二区三区| 日韩激情av在线免费观看| 农村妇女精品一区二区| 奇米精品一区二区三区四区 | 97偷自拍亚洲综合二区| 秋霞成人午夜鲁丝一区二区三区| 成人午夜免费在线观看| 亚洲欧美日韩国产手机在线| 亚洲国产成人va在线观看麻豆| 伊人精品一区| 2019中文字幕在线免费观看| 亚洲欧美黄色片| 亚洲主播在线播放| 免费观看黄网站| 一区二区不卡| 91视频8mav| 国产日产一区二区三区| 欧美日韩国产首页| 天堂网av2018| 免费不卡在线视频| 亚洲欧美成人一区| 国内精品伊人| 日韩在线观看网站| 一级黄色大毛片| 18成人在线观看| 中文字幕在线视频精品| 91综合久久| 成人欧美一区二区三区黑人| 麻豆av在线免费看| 在线成人av网站| 欧美精品久久久久久久久46p| 久久精品国产精品亚洲综合| 一个色的综合| 精品三级久久久| 欧美激情精品久久久久久大尺度 | 中文字幕在线观看高清| 国产日韩欧美麻豆| 亚洲欧美日本一区二区三区| 欧美aaaa视频| 91蜜桃网站免费观看| 黄色影院在线看| 亚洲精品电影在线观看| 激情视频网站在线观看| 欧美经典一区二区| 中文字幕第一页在线视频| 自由日本语亚洲人高潮| 成人看片视频| 玖玖在线播放| 中日韩美女免费视频网站在线观看 | 青青草成人激情在线| 四虎4545www精品视频| 色噜噜狠狠狠综合曰曰曰| 99热这里是精品| 五月婷婷激情综合| 久久婷婷五月综合| 国产精品77777| 六月婷婷激情综合| 九九久久婷婷| 51精品国产人成在线观看| av中文资源在线资源免费观看| 精品夜色国产国偷在线| 91久久国语露脸精品国产高跟| 亚洲精品成人天堂一二三| 朝桐光av一区二区三区| 麻豆成人久久精品二区三区红 | 久久影院理伦片| 福利视频亚洲| 国内成人精品一区| 成人高潮成人免费观看| 日韩精品一区二区三区老鸭窝| 欧美a视频在线观看| 亚洲手机成人高清视频| 极品人妻一区二区三区| 精品亚洲国产成人av制服丝袜| 久久视频这里有精品| 99精品在线| 精品不卡在线| 香蕉久久久久久| 欧美一级大胆视频| 手机电影在线观看| 中文字幕精品久久| 亚洲区小说区图片区| 欧美一区永久视频免费观看| 国产成人无码av| 夜夜嗨av一区二区三区四季av | 国产精品久久久久久久久免费看| 视频在线观看入口黄最新永久免费国产 | 天天做天天摸天天爽国产一区 | 日本五十肥熟交尾| 久久精品av麻豆的观看方式| 国产h视频在线播放| 欧美精品播放| 在线视频不卡一区二区三区| 午夜精品福利影院| 高清国产在线一区| 亚洲精品乱码日韩| 国产精品电影一区| 亚洲欧美韩国| 性欧美xxxx| 欧美人动性xxxxz0oz| 色先锋资源久久综合5566| 国产又爽又黄网站亚洲视频123| 日韩午夜三级在线| 国产精品无码天天爽视频| 在线观看av一区二区| 国产成人一级片| 亚洲成国产人片在线观看| 精品国产精品国产精品| 中文字幕一区二| 久久一级免费视频| 国产精品色婷婷| 精品无人区无码乱码毛片国产| 99久久精品免费精品国产| 绯色av蜜臀vs少妇| 国产剧情一区在线| 图片区乱熟图片区亚洲| 国内精品视频一区二区三区八戒| 亚洲第一狼人区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 99成人精品视频| 色噜噜久久综合| 国产91国语对白在线| 日本精品免费观看高清观看| 国产精品久久久久久久久久久久久久久久久 | 国产福利一区二区三区在线视频| 亚洲欧美天堂在线| 黄一区二区三区| 在线免费观看av网| 国产一区福利在线| 一个人看的视频www| 国产精品白丝av| 亚洲图片欧美另类| 91麻豆国产福利在线观看| 欧洲av一区二区三区| 亚洲国产成人在线| 久久精品一区二区三区四区五区| 中文字幕一区不卡| 中文字幕人妻一区二| 亚洲精品第1页| 日本少妇xxxx动漫| 一本大道久久a久久综合婷婷 | 久色婷婷小香蕉久久| 中文字幕日韩久久| 成人一级黄色片| 一级性生活大片| 国产精品无圣光一区二区| 三上悠亚在线观看视频| 亚洲最大成人综合| 69视频免费在线观看| 欧美猛男男办公室激情| 亚洲第一天堂网| 亚洲精品日韩丝袜精品| 色欧美激情视频在线| 欧美高清videos高潮hd| 天天综合av| 国产中文日韩欧美| 午夜日韩影院| 欧美一区二区三区在线免费观看 | 欧美国产高跟鞋裸体秀xxxhd| mm视频在线视频| 国产精品一区二区三区在线播放| 亚洲人成777| 精品欧美日韩| 国产精品二区不卡| 青青草视频在线免费播放| 免费成人在线影院| 高清中文字幕mv的电影| 欧美高清在线视频| 国产系列精品av| 欧美日韩第一区日日骚| 日本成人动漫在线观看| 在线视频日韩精品| 91av久久| 成人欧美在线观看 | 中文字幕成人一区| 99国产精品99久久久久久粉嫩| 午夜视频你懂的| a亚洲天堂av| 午夜剧场免费在线观看| 日韩欧美在线中文字幕| 性色av蜜臀av| 中文字幕亚洲激情| 欧美少妇网站| 91久久极品少妇xxxxⅹ软件 | 91麻豆精品激情在线观看最新| 免费精品视频一区二区三区| 中文字幕亚洲精品乱码| 日本激情视频在线| 波多野结衣中文一区| 亚洲女人久久久| 91久久人澡人人添人人爽欧美 | 中文字幕亚洲一区二区三区五十路| 成人影音在线| 亚洲一区二区三区成人在线视频精品 | 亚洲国内精品在线| 亚洲区欧洲区| 国产视频观看一区| 精品国产一区探花在线观看| 欧美午夜小视频| 国产精品 欧美精品| 最新日韩免费视频| 欧美亚洲免费在线一区| 亚洲人午夜射精精品日韩| 欧美黑人性猛交| 麻豆精品国产| 青青草原网站在线观看| 狠狠色丁香久久婷婷综合_中| 久久精品三级视频| 在线国产电影不卡| 日韩a级作爱片一二三区免费观看| 欧美另类极品videosbest最新版本| 国产精品99久久久久久董美香 | 午夜久久tv| 欧美性猛交xxxx乱大交91| 亚洲欧洲无码一区二区三区| 中文字幕人妻精品一区| 中日韩美女免费视频网站在线观看| 成人免费无遮挡| 麻豆91av| 日韩国产欧美一区二区三区| 欧美多人猛交狂配| 色综合视频一区二区三区高清| 日本一二三区在线视频| 欧美在线免费观看| 国产精品欧美在线观看| 日韩手机在线观看视频| 国产人妖乱国产精品人妖| 自拍偷拍18p| 在线视频欧美日韩| 久久日本片精品aaaaa国产| 日本特级黄色大片| 国产成人综合网站| 中文字幕第28页| 日韩国产精品亚洲а∨天堂免| 欧美私密网站| 少妇特黄a一区二区三区| 蜜臀a∨国产成人精品| 国产suv精品一区二区68| 日韩欧美国产wwwww| 538视频在线| 欧美精品一区二区三区四区五区 | 国产精品一区二区入口九绯色| 激情av一区二区| 精品视频二区| 91九色在线视频| 国产在线欧美| 91精品人妻一区二区| 精品婷婷伊人一区三区三| 直接在线观看的三级网址| 久久久7777| 麻豆精品视频在线观看| 久久久久久天堂| 亚洲午夜国产成人av电影男同| 99精品女人在线观看免费视频| 日本男女交配视频| 国产视频一区二区在线观看| 91精品人妻一区二区三区果冻| 欧美黑人巨大精品一区二区| 亚洲婷婷伊人| 伊人精品视频在线观看| 黄网动漫久久久| 在线观看h片| 国产尤物99| 老司机一区二区| 在线观看免费国产视频| 日韩在线视频免费观看高清中文| 成人av婷婷| 另类小说色综合| 午夜亚洲国产au精品一区二区| 超碰国产在线观看| 国产精品二区二区三区| 免费在线视频一区| 国产成人在线播放视频| www国产亚洲精品久久网站|