91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET傳輸機制是什么

發布時間:2021-12-06 15:43:09 來源:億速云 閱讀:103 作者:iii 欄目:編程語言

這篇文章主要介紹“ASP.NET傳輸機制是什么”,在日常操作中,相信很多人在ASP.NET傳輸機制是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET傳輸機制是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

ASP.NET頁面如果是通過post請求到服務器,框架將會遵行事件周期生成、調用控件,而控件(如果支持回傳)則將加載回傳數據,并且映射成控件的服務器端事件,就好像在重放客戶的客戶行為(客戶按下一個按鈕,卻引發服務器端控件的click事件)。其中的機制如何?

ASP.NET組件設計之傳輸機制的問題:如果一個控件需要處理回傳事件,那么必須實現一個特定接口 IPostBackEventHandler接口:

public interface IPostBackEventHandler{       void RaisePostBackEvent(string eventArgument);   }

ASP.NET組件設計之傳輸機制的另外一個接口:

IPostBackDataHandler    {   bool LoadPostData( string postDataKey,   NameValueCollection postCollection);   void RaisePostDataChangedEvent();   }

一旦控件實現了這些接口,頁面框架就會自動在PostBack數據完成后,調用控件的此接口IPostBackDataHandler。LoadPostData,從而讓控件讀取post上來的數據。PostDataKey為PostBack數據中的命名鍵名,通過NameValueCollection[postDataKey]可以獲得頁面框架傳遞給控件的值。控件應當讀取此值,進行自己內部狀態更新,反映狀態變化。如果控件返回真,表示服務器控件狀態改變,此時頁面框架會立即調用此控件的RaisePostDataChangedEvent方法。此時,控件應當自己定義該引發那些服務器控件對外提供的事件。這些事件往往是控件編程者精心設計留給使用這控鍵的aspx編程者的代碼舞臺。

至于另一個接口IPostBackEventHandler,也是回傳時候服務器調用的接口。我們知道每一個控件都有一個UniqueID,當客戶端觸發一個可以引起回傳的客戶端事件(譬如按下了submit按鈕),那么自然HTTP Post數據到服務器端,服務器頁面框架進行到PostBack處理時候,會檢索控件是否支持IpostBackEventHandler接口,并且查找控件的UniqueID發現支持就立即調用此接口的RaisePostBackEvent方法,表示UniqueID的控件發生了一個需要捕獲的事件。很明顯,并非客戶端所有事件都可以投射到服務器端,只能夠是能夠引發Post Back(也就是能夠提交表單數據到服務器的事件)的事件和控件。注意,這里嚴格要求了UniqueID必須在服務器端和客戶端對應一致,否則無法映射事件。

值得控件編寫者注意的是,如果要實現接口,需要如下實現接口,而不是通常的僅僅接口方法名同名即可:

void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)   {          ……   }

ASP.NET組件設計之傳輸機制的實現接口方面也就是說,接口針對頁面框架實現的,也由頁面框架調用。

另一方面,在客戶端,能夠引起回傳的實際上僅有2個HTML元素﹤inoput type=submit ﹥和﹤input type=image,但是通過客戶端腳本,其他客戶端事件也可導致回傳數據到服務器端。Page類提供了一系列的方法來幫助實現其他可引發回傳的途徑:

public string GetPostBackClientEvent(      Control control,      string argument   );

獲取對客戶端腳本函數的引用,該函數在被調用時將導致服務器回發到窗體。

public string GetPostBackClientHyperlink(      Control control,      string argument   );

將 javascript: 追加到從 GetPostBackEventReference 調用的返回的開頭,從而使服務器上可以進行超級鏈接回發處理。

public string GetPostBackEventReference(Control);   public string GetPostBackEventReference(Control, string);

獲取對客戶端腳本函數的引用,調用該函數將使服務器

如果一個控件確定通過以上方法確保客戶端引發回傳事件,那么控件引用頁將導致最終輸出到客戶端的HTML中包含腳本,并且腳本中藏有如下隱含變量:

﹤input type=”hidden” name=”__EVENTTARGET” value=””﹥   ﹤input type=”hidden” name=”__EVENTARGUMENT” value=””﹥   ﹤script language=”javascript”﹥   ﹤!—   function __doPostBack(eventTarget,eventArgument)           {           var theform=document._ct10;           theform.__EVENTTARGET.value= eventTarget;           theform.__EVENTARGUMENT.value= eventArgument;           }   -- ﹥   ﹤/script﹥

任何客戶端腳本只要合法調用了__doPostBack方法即可實現回傳到服務器端,并且服務器端也知道了是引發了那一個UniqueID得控件的事件。

到此,關于“ASP.NET傳輸機制是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瓦房店市| 盐亭县| 南投县| 合水县| 上高县| 电白县| 旬阳县| 汉中市| 贺兰县| 克拉玛依市| 清水河县| 泗洪县| 伊金霍洛旗| 西吉县| 甘孜| 江山市| 手游| 扶风县| 双桥区| 泰宁县| 斗六市| 明溪县| 四川省| 五台县| 彭山县| 福海县| 平度市| 纳雍县| 东乌| 明水县| 金塔县| 浑源县| 武夷山市| 洛阳市| 广安市| 白朗县| 大厂| 兴安县| 宣威市| 霍邱县| 乐陵市|