2010-07-22 54 views
87

我只是想聽到一些權威人士應該在何時何地使用LITERAL來控制LABELASP.Net:文字與標籤

據我所知,區別在於:A LABEL可以通過添加的<SPAN>標籤進行樣式設置。

我個人發現在我的HTML中添加<SPAN>標籤很煩人,從來沒有實際上通過ASP應用樣式,所以LITERAL似乎是大多數時候應該使用的東西......但我擔心有其他考慮或使用標籤,我不知道的好處。

如果我們沒有對它們應用樣式,用LITERAL代替LABEL s是否100%正常?有沒有其他的考慮?

回答

114

是的,主要的區別在於Literal控制只是呈現出文本,但Label控制圍繞着它與<span>標籤(除非您使用AssociatedControlID屬性,在這種情況下Label控制將呈現<label>標籤)。

因此,標籤的樣式可以更容易,但如果您只是插入文本,文字是要走的路。文字控件還有一個方便的屬性Mode,它管理文本的呈現方式。您可以將其設置爲HTML編碼,或者不進行任何更改而渲染,或者刪除任何「不支持的標記語言元素」。

如果你未施加任何樣式(例如,通過使用LabelCssClass屬性),這將是罰款與Literal控制來代替Label控制。

+1

那麼,爲了確保在這裏,根本沒有其他的考慮?我問,因爲你寫的「主要區別是......」。顯然我對主要區別不感興趣。謝謝。 – 2010-07-22 13:58:11

+2

@Django:Chris Marisic的回答非常重要。 ASP.Net當你想要一個HTML'

+0

太棒了!這也解釋了爲什麼它也被稱爲標籤。非常感謝! – 2010-07-22 14:10:10

32

當你有類似

<asp:Label EnableViewState="false" ID="Label8" runat="server" 
     AssociatedControlID="txtEmail">Email Address:</asp:Label> 

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox> 

這是最佳的使用標籤元素,因爲它會正確使用正確的for屬性把它變成一個HTML label元素瞄準你的文本框,代碼,這樣,如果一個用戶點擊標籤時會自動將其光標置於文本框內。

否則使用文字,除非文字包裝在span將有利於CSS樣式。

+1

我還沒有意識到的另一個重要提示。謝謝! – 2010-07-22 13:43:30

+2

是的,這是我自己使用標籤的主要原因,提供了一些更好的用戶體驗。 – 2010-07-22 14:14:32

+2

當然。我一直想知道如何在ASP.Net中複製這一點HTML。我很高興終於明白了。 – 2010-07-22 14:17:07

12

enter image description here

顯示簡單的文本,格式化文本或HTML文本,因爲它是我將開始與字面第一次作爲其重量輕,不排放出額外的SPAN標記。

請參閱this video其中演示有關這些額外的標記。

但是我們不能將CSS應用於文字,我們不能將像Label1.Attributes.Add這樣的屬性添加到文字上。任何容器導向的東西都不能實現,因爲字面不被SPAN標籤包圍。

看到很多ASP.NET Webform人默認選擇標籤來顯示文本,但不知道它會生成額外的SPAN標籤,如果您有很多標籤可能會使您的HTML變得沉重,這也令人傷心。

1

差B/w的標籤和文字控制在asp.net

在幾乎所有的方式一個字面控制是一樣的一個標籤控制。這兩個控件都用於在Web窗體上顯示文本。 (Text屬性可以在HTML或代碼隱藏中設置。)

最大的區別在於,Label控件在渲染時將文本包裝在span中。任何應用於Label控件的樣式都將使用spanstyle屬性進行渲染。

例如,下面的HTML

<asp:Label ID="Label1" runat="server" Text="Label Text" 
ForeColor="Red" Font-Bold="true" ></asp:Label> 

將呈現爲

<span id="Label1" style="color:Red;font-weight:bold;">Label Text</span>

文字控制不顯示不輸出任何周圍的標記,所以文本作爲是:

例如,以下HTML

<asp:Literal ID="Literal1" runat="server" 
Text="Literal Control Text"></asp:Literal> 

將呈現爲

Literal Control Text

所以,如果你想要的任何樣式應用到比使用Label控件,否則使用文字控制。正因爲如此,與Label控件相比,Literal控件是一個輕量級控件。

供參考:繼承層次結構對於立即控制類是(對象=>控制=>文字),其中作爲標籤控制,層級是(對象=>控制=>的WebControl =>標籤)