亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

丰镇市| 延川县| 博白县| 浮山县| 桓仁| 交口县| 股票| 白朗县| 怀集县| 阿拉善左旗| 新河县| 娄底市| 兰考县| 沂水县| 江都市| 青神县| 桂阳县| 武定县| 锡林浩特市| 瑞丽市| 嘉黎县| 台安县| 攀枝花市| 永嘉县| 克什克腾旗| 韩城市| 潜江市| 平顺县| 乐安县| 宜阳县| 老河口市| 兴义市| 昆明市| 怀化市| 东安县| 信阳市| 亳州市| 商丘市| 邯郸市| 凤城市| 延长县|