我发现可以使用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,因为它们在代码生成方面是最干净的,所以仍然在寻求解决方案。
答案 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”。