2012-04-03 86 views
3

我发现,这是可能的填充用的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”)%>'。

UPDATE:

我发现其中一些控制有效的解决方案:

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

然而,这个工程的文字控制不工作,因为他们不允许子控件。我更愿意继续使用Literal,因为它们在代码生成方面是最干净的,所以仍然在寻求解决方案。

+1

http://stackoverflow.com/questions/9382559/asp-net-expressions-inline-tag-with-string-format/9383420 – 2012-04-03 13:27:06

+3

为什么不简单地添加'Literal1.Text = GetGlobalResourceObject(“Messages” ,“ThankYouLabel”)'在你的代码隐藏文件中? – Candide 2012-04-03 13:29:34

+0

Ingenu - 我想过这个。我没有尝试过,但我猜它会起作用。然而,我反对将代码应用于背后的想法,不知道为什么,保持文本数据和编程分开的可能性(即使我要求的是前端编程)。 – Chris 2012-04-03 13:32:28

回答

0

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

2

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

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

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

为了使这项工作,你应该确保无论是隐性或显性的数据,你的控件结合使用。否则像这样的控制没有约束什么都不输出

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

0

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