IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)服務(wù)器WEB服務(wù)器 → 解決ASP.NET服務(wù)器的幾個(gè)問(wèn)題

解決ASP.NET服務(wù)器的幾個(gè)問(wèn)題

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

?? 對(duì)于每一個(gè)服務(wù)器控件System.Web.UI.Control 都具有 ID,UniqueID,ClientID 三個(gè)屬性,那么這個(gè)三者到底有河關(guān)系,在客戶端HTML中又是如何對(duì)應(yīng)呈現(xiàn)的呢?

?? ID:獲取或設(shè)置分配給服務(wù)器控件的編程標(biāo)識(shí)符。
?? 分配給控件的編程標(biāo)識(shí)符。 (可寫(xiě))
?? 設(shè)置服務(wù)器控件上的此屬性可提供對(duì)服務(wù)器控件的屬性、事件和方法的編程訪問(wèn)。Web 開(kāi)發(fā)人員可以通過(guò)在 ASP.NET服務(wù)器控件的開(kāi)始標(biāo)記中聲明 ID 屬性來(lái)設(shè)置此屬性。

?? 如果沒(méi)有為服務(wù)器控件指定該屬性(以聲明方式或編程方式),則可通過(guò)其父控件的 Controls 屬性獲取對(duì)該控件的引用。

?? 注意
?? 在此屬性中包含空格將導(dǎo)致 ASP.NET 頁(yè)分析器錯(cuò)誤。

?? UniqueID:獲取服務(wù)器控件的唯一的、以分層形式限定的標(biāo)識(shí)符。(只讀)
?? 服務(wù)器控件的完全限定標(biāo)識(shí)符。
?? 此屬性與 ID 屬性不同,因?yàn)?UniqueID 屬性包含服務(wù)器控件命名容器的標(biāo)識(shí)符。處理頁(yè)請(qǐng)求時(shí)自動(dòng)生成此標(biāo)識(shí)符。

?? 此屬性對(duì)于區(qū)分包含在其他重復(fù)的數(shù)據(jù)綁定服務(wù)器控件中的服務(wù)器控件尤其重要。重復(fù)控件包括 Repeater、 DataList 和 DataGridWeb 服務(wù)器控件(或任何在數(shù)據(jù)綁定時(shí)創(chuàng)建的包含重復(fù)功能的自定義服務(wù)器控件),它們充當(dāng)其子控件的命名容器。這意味著它為其子控件創(chuàng)建唯一的命名空間,以使它們的 ID 屬性值不沖突。

?? 例如,如果將 ASP.NET服務(wù)器控件包含在 Repeater 服務(wù)器控件中,并給 Label 控件賦以 MyLabel 的 ID 屬性值,給 Repeater 賦以 MyRepeater 的 ID 屬性值。如果將 Repeater 數(shù)據(jù)綁定到具有三個(gè)項(xiàng)的 ArrayList 對(duì)象,則 Label 服務(wù)器控件的每個(gè)實(shí)例所產(chǎn)生的 UniqueID 屬性是 MyRepeater:ctl0:MyLabel、 MyRepeater:Ctl1:MyLabel 和 MyRepeater:Ctl2:MyLabel。

?? ClientID:獲取生成 ASP.NET服務(wù)器控件標(biāo)識(shí)符。? (只讀)
?? 由ASP.NET生成的服務(wù)器控件標(biāo)識(shí)符。
?? 有時(shí),不能為控件分配唯一的名稱。例如,如果 Repeater 控件在它的某個(gè)模板中包含一個(gè) Label 控件,則為 Repeater 控件中的各個(gè)項(xiàng)呈現(xiàn)該??? Label 控件的一個(gè)實(shí)例。在呈現(xiàn)控件的多個(gè)實(shí)例時(shí),為防止出現(xiàn)命名沖突,ASP.NET 為頁(yè)上的各個(gè)服務(wù)器控件自動(dòng)生成一個(gè)唯一的 ClientID 值。ClientID 值是通過(guò)連接控件的 ID 值和它的父控件的 UniqueID 值生成的。如果未指定控件的 ID 值,則使用自動(dòng)生成的值。生成的 ID 的各個(gè)部分以下劃線字符 (_) 分隔。

?? 注意
?? 除了用來(lái)分隔 ID 值的是下劃線字符而不是 IdSeparator 屬性指定的字符以外,為控件生成的 ClientID 值與 UniqueID 值相同。默認(rèn)情況下,IdSeparator 屬性設(shè)置為冒號(hào)字符 (:)。由于 ClientID 值不包含冒號(hào)字符,因此,它可以用于不支持包含冒號(hào)的 ID 的 ECMAScript。

?? ClientID 值經(jīng)常用于以編程方式訪問(wèn)為客戶端腳本中的控件呈現(xiàn)的 HTML 元素。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) ASP.NET 網(wǎng)頁(yè)中的客戶端腳本。

?? 總結(jié):
?? ID,
?? 這個(gè)肯定黑熟悉了,用于server端編程引用控件,沒(méi)有對(duì)應(yīng)的client值,即不呈現(xiàn)到html中

?? UniqueID,
?? asp.net引擎按控件樹(shù)層次生成的分層形式限定的標(biāo)志符,連接符默認(rèn)為 $ (美元符號(hào))【注:MSDN說(shuō)默認(rèn)為 :? (冒號(hào)),實(shí)際是 $ ,可能文檔有誤吧】,此連接符在asp.net 2.0 中由屬性 IdSeparator? 指定,在client中呈現(xiàn)為html元素的name屬性
此屬性主要用來(lái)提交(PostBack)客戶端數(shù)據(jù),如Request.Form[someControl.UnqiueID]

?? ClientID,
?? 由父控件的UnqiueID連接本身ID而成,但是連接符不一樣,默認(rèn)為? _? (下劃線),此連接符在asp.net 2.0 中由屬性 ClientIDSeparator? 指定,在client中呈現(xiàn)為html元素的id屬性,
?? 此屬性主要在客戶端教本中使用,如 var o = document.getElementById('< % = someControl.ClientID %>');

?? updated: 2007年5月20日
?? 關(guān)于 UniqueID的層次分隔符號(hào),1.x? 中為 :(冒號(hào)),而 2.0 已實(shí)現(xiàn)為 $(美元符),主要原因可能是 javascript 中標(biāo)識(shí)符是允許 $,而不允許 : 的。(當(dāng)你偷懶的時(shí)候,可以在 js 中直接使用表單元素的 name屬性應(yīng)用該表單元素,而不用 document.getElementsByName 或者 document.getElementById,不推薦:)

?? updated: 2007年7月14日
?? ASP.NET 使用的回發(fā)機(jī)制(簡(jiǎn)單版本)是通過(guò)一個(gè)原型為 __doPostBack(< ControlUniqueID>, < CommandArgs>) 的 javascript 函數(shù)

?? function__doPostBack(eventTarget,eventArgument){? if(!theForm.onsubmit||(theForm.onsubmit()!=false)){? theForm.__EVENTTARGET.value=eventTarget;? theForm.__EVENTARGUMENT.value=eventArgument;? theForm.submit();? }? } 此函數(shù)的第一個(gè)參數(shù) < ControlUniqueID> 對(duì)應(yīng)引起頁(yè)面回發(fā)控件的客戶端 name 屬性/服務(wù)端 UniqueID 屬性,
?? 當(dāng)用戶引發(fā)一個(gè)事件,如點(diǎn)擊按鈕,選擇列表框的某一項(xiàng),首先通過(guò) _doPostBack 函數(shù)將此值存在隱藏域中,然后提交頁(yè)面。

?? 在服務(wù)器端,ASP.NET 引擎通過(guò) HttpRequest.HttpMethod 確定請(qǐng)求是否為 post 方式,若是,則檢索HttpRequest.Request.Form["__EVENTTARGET'],獲取引發(fā)回發(fā)的控件唯一標(biāo)識(shí)符,并在頁(yè)面控件集合層次中查找,若找到此控件,則將在適當(dāng)階段引發(fā)服務(wù)器端事件。

關(guān)鍵詞標(biāo)簽:ASP.NET,服務(wù)器

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈 ISAPI Rewrite實(shí)現(xiàn)IIS圖片防盜鏈 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略 在Windows服務(wù)器上快速架設(shè)視頻編解碼器全攻略 win2000server IIS和tomcat5多站點(diǎn)配置 win2000server IIS和tomcat5多站點(diǎn)配置

相關(guān)下載

    人氣排行 XAMPP配置出現(xiàn)403錯(cuò)誤“Access forbidden!”的解決辦法 WIN2003 IIS6.0+PHP+ASP+MYSQL優(yōu)化配置 訪問(wèn)網(wǎng)站403錯(cuò)誤 Forbidden解決方法 如何從最大用戶并發(fā)數(shù)推算出系統(tǒng)最大用戶數(shù) Server Application Unavailable的解決辦法 報(bào)錯(cuò)“HTTP/1.1 400 Bad Request”的處理方法 Windows Server 2003的Web接口 http 500內(nèi)部服務(wù)器錯(cuò)誤的解決辦法(windows xp + IIS5.0)