2013-01-12 144 views
3

asp:label與html label有什麼區別?asp:label和HTML標籤有什麼區別?

我知道第一個在服務器上呈現,所以基本上它返回一個跨度選項卡,但它的用途是什麼?有人想要使用HTML標籤,以及想要使用asp:label的情況是什麼?我知道,如果我把它作爲一個ASP控件,我可以以編程方式訪問它,但純粹在設計UI的過程中,兩者之間有什麼區別?

+2

一個好的交想象的差 [http://stackoverflow.com/questions/6839007/should-i-use-the-asplabel-tag][1] [1 ]:http://stackoverflow.com/questions/6839007/should-i-use-the-asplabel-tag – MuhammadHani

+0

一個asp:標籤被渲染爲一個標籤,如果有一個AssociatedControlID – ScottE

回答

7

如果asp:Label將其「AssociatedControlID」屬性值設置爲頁面上的表單控件的ID,那麼它實際上將呈現爲HTML標籤控件(將「for」值設置爲客戶端ID當呈現給客戶端時,它是相同的控件)。

的HTML標籤控制被設計嚴格爲提供一個標籤/字幕表單控件(即輸入,選擇或文本域),其描述的形式控制的目的給用戶(見https://developer.mozilla.org/en-US/docs/HTML/Element/label)。標籤通常(強烈地)使用「for」屬性與特定輸入相關聯,該屬性應該是輸入的ID。這對於那些有無障礙需求的人來說特別有用,他們無法僅僅靠文字和控制的接近度來解釋關係。想象一下帶有幾個文本框的表單,但無法知道每個表單需要哪個輸入。 HTML標籤控件不用於此上下文以外的一般文本。

如果asp:Label的「AssociatedControlID」屬性沒有值,則控件將簡單地呈現爲包含文本的跨度控件。一些開發人員喜歡使用asp:Labels將文本輸出到頁面上,從而賦予控件雙重用途(與HTML對應不同)。我個人更喜歡使用asp:Literals來達到這個目的,因爲它可以讓我更好地控制包含標記。

選擇asp:Label而不是原生HTML標籤控件的原因是,您可以使用服務器端代碼輕鬆地與它進行交互,例如更改文本或CssClasses以響應服務器事件,並且您可以輸入將服務器ID作爲客戶端的「for」值中的「AssociatedControlID」值自動呈現爲客戶端ID(例如,顯示爲「ct100_MainContent_TextBox1」而非「TextBox1」)。

相關問題