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

我发现使用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,但这对我来说实际上并不起作用,只是写出’<%= GetGlobalResourceObject(“Messages”,“ThankYouLabel”)%>‘在页面上(不是内容,实际的字符串).

更新:

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

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

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

最佳答案 asp:Literal不支持<%=%>构造,并且不允许子控件(我的意思是像< asp:Literal runat =“server”><%= …%>< / asp:Literal>).

但是如果你使用数据绑定,你可以使用data-binding expresions<%#…%>:

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

要使其工作,您应确保使用控件的隐式或显式数据绑定.否则这样的控制没有绑定输出任何东西.

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

点赞