精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲欧美日韩在线观看a三区| 在线观看三级视频| 国产日韩欧美一区二区三区在线观看| 日韩电视剧在线观看免费网站| 免费高清在线观看免费| 91欧美在线视频| 国产美女在线观看一区| 97久久精品人搡人人玩| 亚洲精品成人无码| 精品入口麻豆88视频| 欧美日韩国产激情| 亚洲欧美日韩精品综合在线观看| www久久久久久| 午夜在线一区| 欧美成人合集magnet| 亚洲精品理论片| vam成人资源在线观看| 天天操天天色综合| 黄色a级在线观看| 男女污污视频在线观看| 国产精品影视在线观看| 国产成人精品av| 国产亚洲欧美精品久久久www| 国产麻豆一区二区三区精品视频| 日韩丝袜美女视频| 国产精品igao| 国产精品电影| 亚洲黄一区二区三区| 欧洲高清一区二区| 刘亦菲久久免费一区二区| 麻豆中文一区二区| 日本久久91av| 国产无码精品在线播放| 亚洲精品tv久久久久久久久久| 亚洲男人的天堂网站| 麻豆短视频在线观看| 四虎国产精品成人免费影视| 欧美日韩在线另类| 精品人妻大屁股白浆无码| 一区二区三区视频网站 | 午夜免费高清视频| 激情国产在线| 亚洲午夜在线视频| 欧美黄色免费网址| 黄色免费在线网站| 国产精品久久久久7777按摩| 欧美亚州在线观看| 欧美另类自拍| 久久影音资源网| 九色综合婷婷综合| 天天干在线观看| 国产91在线观看丝袜| 91久久精品国产91久久性色tv| 最新黄色网址在线观看| 日本视频一区二区| 国产精品久在线观看| 国产一区二区视频网站| 久久亚洲视频| 日韩av手机在线| 久久精品视频7| 久久精品女人| 国产精品草莓在线免费观看| 国产污视频网站| 日韩精品国产欧美| 国产精品日韩一区| 一级成人免费视频| 精品夜夜嗨av一区二区三区| 91在线观看免费网站| 国产三级伦理片| 国产成人免费xxxxxxxx| 成人在线看片| 四虎精品成人影院观看地址| 久久久久九九视频| 日韩欧美在线观看强乱免费| 2019中文字幕在线视频| 亚洲视频资源在线| 丁香婷婷综合激情| 欧美久久天堂| 色噜噜偷拍精品综合在线| 搡女人真爽免费午夜网站| 国产精品无码久久久久| 3751色影院一区二区三区| 午夜诱惑痒痒网| 超碰精品在线观看| 亚洲欧美日韩直播| 国产真人真事毛片视频| 亚洲五月综合| 性欧美xxxx视频在线观看| 国产精品男女视频| 青青草国产精品亚洲专区无| 成人黄色影片在线| 高清毛片aaaaaaaaa片| 99精品国产热久久91蜜凸| 欧美日韩亚洲在线| 毛片av在线| 香蕉av福利精品导航| 日韩精品一区二区三区久久| 国产原创一区| 亚洲成色777777女色窝| a级大片在线观看| 欧美激情理论| 午夜精品www| 最近中文字幕免费观看| 国产精品影视天天线| 老牛影视免费一区二区| 欧美高清视频| 欧美视频一二三| 国产一级片自拍| 高清精品视频| 中文字幕精品久久久久| 精品无码人妻一区二区三区| 久久久综合网| 亚洲一区二区三区久久| 日韩私人影院| 亚洲黄色小视频| 日韩精品一区中文字幕| 日韩在线亚洲| 中文字幕日韩av电影| 亚欧视频在线观看| 国模无码大尺度一区二区三区| 韩国一区二区三区美女美女秀 | 这里只有精品丝袜| 国产第一页第二页| 久久66热re国产| 久久精品一二三区| 91精选在线| 欧美吻胸吃奶大尺度电影 | 欧美深夜福利视频| 国产成年精品| 中文字幕9999| 视频一区二区三区四区五区| 成人性视频网站| 黄瓜视频免费观看在线观看www| 最新中文字幕在线播放| 精品精品国产高清一毛片一天堂| 二区三区四区视频| 日韩精品91亚洲二区在线观看| 国产精品视频在线免费观看 | 久久久久久久久电影| 在线观看视频二区| 国产亚洲视频系列| 国产乱子伦农村叉叉叉| 91蝌蚪精品视频| 欧美插天视频在线播放| 一本一道人人妻人人妻αv | 在线看的片片片免费| 青青草视频一区| 日韩视频在线观看国产| 波多野结衣亚洲| 亚洲精品第一页| 国产无套在线观看| 粉嫩13p一区二区三区| 国产人妻人伦精品| 精品国产鲁一鲁****| 久久精品国产99国产精品澳门| 中文字幕免费观看视频| 亚洲国产精品国自产拍av| av无码精品一区二区三区| 蜜桃精品wwwmitaows| 欧美一区亚洲一区| 日韩av免费观影| 色爱区综合激月婷婷| 久久精品成人av| 天堂成人国产精品一区| 日韩精品国内| 视频精品导航| 色狠狠久久aa北条麻妃 | 日韩片之四级片| 亚洲av鲁丝一区二区三区| 国产尤物一区二区在线| 91嫩草国产丨精品入口麻豆| 综合伊人久久| 91国产精品电影| 日本天堂影院在线视频| 在线观看av一区| 手机看片国产日韩| 国产在线精品国自产拍免费| 日韩亚洲欧美一区二区| 第一区第二区在线| 日本久久久久久久久| 啊v视频在线| 7777精品伊人久久久大香线蕉超级流畅 | 中国色在线日|韩| 亚洲人午夜精品免费| 一级做a爱片性色毛片| 亚洲色图第一区| 熟妇高潮一区二区| 久色成人在线| 一区二区三区四区欧美日韩| 欧美日韩国产一区二区在线观看| 韩国v欧美v日本v亚洲| 粉嫩av一区| 欧美一级搡bbbb搡bbbb| 久久久久久久久久影院| 欧美国产日韩一二三区| 杨幂一区二区国产精品| 一本色道久久综合| 尤物国产精品| 国产欧美自拍一区| 日韩免费av一区二区| 成人黄视频在线观看| 日韩精品免费看| 亚洲天堂一二三| 午夜视黄欧洲亚洲| 国产精品情侣呻吟对白视频| 国产麻豆一精品一av一免费| 亚洲中文字幕无码不卡电影| 在线中文字幕第一区| 欧美成人免费在线| 久久99成人| 国产精品高潮在线| av3级在线| 久久久精品国产| 可以在线观看的黄色| 欧美一区二区三区爱爱| www.日韩一区| 亚洲国产一区二区在线播放| 国产免费嫩草影院| 91香蕉视频在线| 麻豆精品国产传媒| 日本一区中文字幕| 成熟丰满熟妇高潮xxxxx视频| 91九色精品国产一区二区| 欧日韩一区二区三区| 国产精品欧美大片| 91情侣在线视频| 欧洲成人一区| 日本一本a高清免费不卡| 色yeye免费人成网站在线观看| 中文字幕欧美日韩精品| 蜜桃视频在线入口www| 亚洲国产91色在线| av网站免费大全| 欧美绝品在线观看成人午夜影视| 国产寡妇亲子伦一区二区三区四区| 亚洲国产精品尤物yw在线观看| 久草福利资源在线| 国产欧美日韩在线看| 少妇大叫太粗太大爽一区二区| 粉嫩一区二区三区性色av| 搡的我好爽在线观看免费视频| 日韩在线观看一区二区| 久久久999免费视频| 在线不卡亚洲| 日韩成人手机在线| 在线国产一区| 欧美a级黄色大片| 91精品综合久久久久久久久久久 | 成人av.网址在线网站| 777午夜精品电影免费看| 欧美一级免费视频| 欧美aa一级| 情事1991在线| 欧美xxxxxx| 国产成人精品久久久| 欧美1级2级| 国产精品久久久久久久久免费看 | 五月天激情小说综合| 国产第一页在线播放| 亚洲成人午夜电影| 日韩欧美国产亚洲| 狠狠躁夜夜躁人人爽天天天天97| 日本最新中文字幕| 欧美日韩激情视频8区| 在线观看免费av片| 色婷婷国产精品综合在线观看| 天天干天天干天天操| 日本精品视频一区二区| 中文字幕你懂的| 日韩一区国产二区欧美三区| 精品国产无码一区二区三区| 亚洲第一精品夜夜躁人人躁| 婷婷亚洲一区二区三区| 亚洲欧洲av一区二区| av中文在线| 免费av一区二区| av影院在线免费观看| 日本高清视频精品| 成人黄色免费网站| 91久久国产精品| 成人看片黄a免费看视频| 久久久久久草| 久久国产成人精品| 99久久99久久精品| 9色国产精品| 欧美午夜aaaaaa免费视频| 激情深爱一区二区| 少妇精品无码一区二区三区| 久久久久久久久99精品| 中文字幕电影av| 欧美日韩亚洲高清| 一区二区视频免费观看| 日韩亚洲欧美在线| 久久电影中文字幕| 久久天天躁狠狠躁夜夜爽蜜月| 国产伦久视频在线观看| 国产精品久久久久久久app| 久久免费福利| 欧美日韩成人一区二区三区 | 国产色99精品9i| 久久精品国产美女| 亚洲va在线| 成人免费毛片网| 国产一区在线观看视频| 成年人网站免费在线观看| 亚洲精品免费看| 天天做天天爱夜夜爽| 日韩一区二区在线看片| 精品视频三区| 欧美激情一区二区三级高清视频| 卡通欧美亚洲| 国产精品美女诱惑| 日韩国产一区二区三区| 东北少妇不带套对白| 捆绑调教美女网站视频一区| 最新在线黄色网址| 亚洲桃色在线一区| 成人黄色三级视频| 精品国产免费人成电影在线观看四季 | 日韩成人一区二区三区在线观看| 日本精品一二三| 国产精品色呦呦| 狠狠人妻久久久久久综合| 精品国产91九色蝌蚪| 免费av网站在线看| 国产成人免费av| 天堂俺去俺来也www久久婷婷| av在线免费观看国产| 久久国产精品无码网站| 波多野在线播放| 午夜电影一区二区| 北条麻妃一二三区| 色yeye香蕉凹凸一区二区av| 亚洲承认视频| 久久九九视频| 在线观看视频免费一区二区三区| 五月天婷婷影视| 国产精品三级电影| 国产美女www| 国产一区二区av| 91av亚洲| 裸模一区二区三区免费| 99国产精品视频免费观看一公开 | www.日韩一区| 日韩国产精品一区| 久草免费在线视频| 国产一区不卡在线观看| 亚洲一级黄色| 污污免费在线观看| 亚洲成人免费影院| 丰满人妻一区二区三区免费| 欧美精品一区在线播放| 国产一区二区三区视频在线| a级黄色片网站| 国产一区二区免费在线| 日韩成人短视频| 欧美一区二区三区系列电影| 黄在线免费观看| www日韩av| 亚洲欧洲视频| 中文字幕一区二区久久人妻网站 | 黄色av网站免费观看| 亚洲天堂2020| 成人国产精品一区二区免费麻豆 | 欧美日韩中文字幕综合视频| 亚洲人午夜射精精品日韩| 欧美亚洲第一页| 国产日产精品_国产精品毛片| 91日韩视频在线观看| 国产精品久久99| 精品人妻一区二区三区三区四区| 九九精品在线视频| 欧美中文一区| 人人干人人视频| 亚洲欧洲成人精品av97| 成人激情四射网| 欧美一级免费看| 99精品美女| 国产吃瓜黑料一区二区| 欧美性生交大片免费| 午夜视频在线观看网站| 亚洲xxxx视频| 亚洲免费中文| 亚洲波多野结衣| 亚洲精品suv精品一区二区| 吉吉日韩欧美| 婷婷视频在线播放| 成人免费视频视频在线观看免费 | 最新亚洲一区| 欧洲美熟女乱又伦| 91精品国产一区二区三区| а√天堂资源官网在线资源| 午夜视频久久久| 国产91精品精华液一区二区三区| 欧美a∨亚洲欧美亚洲| 俺也去精品视频在线观看| 久久人人爽人人爽人人片av不| 欧美成人免费高清视频| 亚洲精品视频观看| 免费a级毛片在线观看|