[英]Label/Literal control with formatted text field
我发现可以使用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功能。 我发现没有标签或文字控件的“资源”的显示值,但这实际上对我不起作用,它只是在页面上写出“ <%= GetGlobalResourceObject(“ Messages”,“ ThankYouLabel”)%>“(而不是内容,该实际字符串)。
更新:
我找到了可以与某些控件一起使用的解决方案:
<asp:Label runat="server" ID="temp"><%= String.Format(Resources.Temp.TempString, Resources.Contact.PhoneSales) %></asp:Label>
但是,此方法不适用于文字控件,因为它们不允许子控件。 我宁愿继续使用Literal,因为就生成的代码而言,它们是最干净的,因此仍在寻找解决方案。
asp:Literal
不支持<%= %>
构造,并且不允许子控件(我的意思是<asp:Literal runat="server"><%= ... %></asp:Literal>
)。
但是,如果使用数据绑定,则可以使用数据绑定表达式 <%# ... %>
:
<asp:Label runat="server" Text="<%# string.Format(...) %>"></asp:Label>
为了使这项工作有效,您应确保为控件使用隐式或显式数据绑定。 否则,这种没有绑定的控件将不会输出任何内容 。
此解决方法有点复杂。 考虑使用asp:Label
控件,或从后面的代码中设置Text
属性。
为了解决我的问题,我实际上对我如何显示内容进行了第二次查看,发现很多时候可以删除文字和标签来代替纯HTML代码。 然后,我可以使用首选方法<%= ... %>
来显示内容。
您可以使用asp:PlaceHolder
控件代替Literal
。
PlaceHolders 可以包含子控件; 它们还支持<%= … %>
样式的“ 显示表达式 ”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.