我什么时候应该使用Localize控件而不是Literal?

kbr*_*ton 25 c# asp.net controls localization

我最近在ASP.NET 4.0 MCTS认证课程的实验室中了解了System.Web.UI.WebControls.Localize控件.我不清楚这种控制的目的.

在示例中,Literal控件和Localize控件似乎或多或少是可互换的.检查后,Localize控件似乎继承自Literal,但不提供其他功能.它使用了一个不同的设计器类,在我看来,它比文字的设计器类要差.

所以,让我感到困惑.文字已经可以本地化.什么是Localize控件用于?我应该使用它,在什么情况下?

Dom*_*icz 35

我很欣赏这已被标记为已回答,但这是另一种方式来看待它.

<asp:Localize> 用于指定资源定义项,该项强制IDE显示某些指定的文本,并且仍允许它在运行时解析为网站的语言.

这对于开发网站内容实际上使用不同语言的网站非常有用.所以你将能够成为一名讲英语的程序员,用土耳其语创建一个网站,并且<asp:Label>在不必学习土耳其语的情况下仍然知道应该是什么.

举个例子:

<asp:Localize runat="server" Text="<%$Resources : Label, Price%>">     
   Price
</asp:Localize>
Run Code Online (Sandbox Code Playgroud)

现在,如果我的默认值Label.resx被翻译成土耳其语,那么Labels.resx映射将是:

Key="Price"
Value="fiyat"
Run Code Online (Sandbox Code Playgroud)

在设计时,IDE将显示Price(作为<asp:Localize>元素的内部文本Price),但是Web浏览器中页面的实际实时视图将解析为fiyat.

因此:

<div>
   <asp:Localize runat="server" 
                 Text="<%$Resources : Label, Price%>">
                      Price
   </asp:Localize>
</div>
Run Code Online (Sandbox Code Playgroud)

变为:

<div>fiyat</div>
Run Code Online (Sandbox Code Playgroud)

但在IDE Designer中,这将显示为"Price".

与标签的区别在于IDE Designer和运行时<asp:Label>都会解决fiyat.


Kel*_*sey 13

这描述得最好:

Localize Control允许您本地化.aspx页面上的任何元素.它提供了其基类Literal控件所不具备的设计时功能; 特别是,Localize控件提供静态内容的设计时编辑,因此您可以在页面设计模式下查看默认值.

发现于:http://wiki.asp.net/page.aspx/357/localize/

MSDN(底部有一个很好的描述)

  • 您引用的MSDN文档指出"Localize控件继承自Literal控件,并且在各方面都与它相同.在设计时使用Localize控件来区分可以与其他静态文本本地化的静态文本." 我是否正确地将其视为"Localize控件的主要好处是它使文明本地化*显而易见"?文字控件已经*是*可本地化的. (2认同)