带有格式化文本字段的标签/文字控件

时间:2012-04-03 13:20:50

标签: c# asp.net string.format

我发现可以使用string.format填充可变信息的资源字符串,见下文:

String.Format(Resources.Temp.TempString, Resources.Contact.PhoneSales)

我可以使用以下方式在我的页面上显示:

<p><%= String.Format(Resources.Temp.TempString, Resources.Contact.PhoneSales) %></p>

在某些情况下,我有一个Label或Literal(或任何控件)可能会动态隐藏或显示内容。通常我会填充使用:

<asp:Literal ID="Literal1" Text="<%$ Resources:Temp,ContactUs %>" runat="server" />

我现在想要使用相同的String.Format功能,同时仍然使用控件。我发现Display value of Resource without Label or Literal control但这对我来说实际上并不起作用,只是写出'&lt;%= GetGlobalResourceObject(“Messages”,“ThankYouLabel”)%&gt;'在页面上(不是内容,实际字符串)。

更新

我找到了一个适用于某些控件的解决方案:

<asp:Label runat="server" ID="temp"><%= String.Format(Resources.Temp.TempString, Resources.Contact.PhoneSales) %></asp:Label>

但是,这对于Literal控件不起作用,因为它们不允许子控件。我更喜欢继续使用Literal,因为它们在代码生成方面是最干净的,所以仍然在寻求解决方案。

3 个答案:

答案 0 :(得分:2)

asp:Literal不支持<%= %>构造,并且不允许子控件(我的意思是<asp:Literal runat="server"><%= ... %></asp:Literal>)。

但是如果您使用数据绑定,则可以使用data-binding expresions <%# ... %>

<asp:Label runat="server" Text="<%# string.Format(...) %>"></asp:Label>

要使这项工作,您应该确保使用控件的隐式或显式数据绑定。否则像这样的控件没有绑定什么都不输出

这种解决方法有点复杂。请考虑使用asp:Label控件,或者从后面的代码中设置Text属性。

答案 1 :(得分:0)

为了解决我的问题,我实际上已经第二次看了我如何显示内容,并发现很多时候可以删除文字和标签来代替纯HTML代码。然后,我可以使用我首选的方法<%= ... %>来显示内容。

答案 2 :(得分:0)

您可以使用asp:PlaceHolder控件而不是Literal PlaceHolders 可以包含子控件;他们还支持<%= … %> - 样式“displaying expressions”。