你真的需要ASP.NET标签中的Text属性吗?

时间:2009-06-12 12:45:34

标签: asp.net

以下有什么区别?

<asp:Label runat="server">Hello World</asp:Label>

<asp:Label runat="server" Text="Hello World"></asp:Label>

更新:

如果它们完全相同,那么为什么

<asp:Label ID="Label1" runat="server">
There were <%#transactionCount%> transactions today
</asp:Label>

在使用单值数据绑定时正确绑定并显示transactionCount的正确值,而...

<asp:Label ID="Label1" runat="server" Text="There were <%#transactionCount%> transactions today">
</asp:Label>

在页面中没有显示transactionCount的值?


再次更新

我理解使用Literal控件的要点。我会相应地拍我的脸 - 但它仍然无法解决问题 - 尽管可能更接近解决方案。

如果我使用......

<asp:Literal ID="Label1" runat="server" Text="<%#transactionCount%>"></asp:Literal>

...我看到transactionCount的值显示在网页中。

另一方面,如果我在单值数据绑定字段前放置任何字符或单词,例如

<asp:Literal ID="Label1" runat="server" Text="No. <%#transactionCount%>"></asp:Literal>

...不会出现transactionCount。

4 个答案:

答案 0 :(得分:4)

他们将在最终的HTML中呈现相同的内容。但是,Text属性对于以编程方式设置代码中显示的文本非常有用。

答案 1 :(得分:2)

是的,不满足ITextControl接口。请记住,99%的开发人员使用Labels错误 - 通常应该使用Literals来保存输出,如果不是<%# Databind() %>。对于大多数事情,您不需要服务器端跨度。

如果要使用标签,请在表单中创建标签字段:

<asp:Label runat="server" id="LabelForFirstName" Text="First Name:" AssociatedControlID="firstname />
<asp:TextBox runat="server" id="FirstName" />

给一个标签绑定到第一个名称标签,并在语义上纠正HTML。

答案 2 :(得分:0)

如果您将文本设置为Hello World,则无法以代码隐藏文件的方式更改其值。

然而,woukd允许您将值更改为mytxt.Text =“New text”

但他们将以同样的方式呈现。

答案 3 :(得分:0)

它们不同的另一个原因是支持implicit localization。在资源文件中指定ID.Property(即Label1.Text)。