【问题标题】:When should I use a Localize control instead of a Literal?什么时候应该使用 Localize 控件而不是 Literal?
【发布时间】:2011-07-04 15:26:12
【问题描述】:

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

在示例中,Literal 控件和Localize 控件似乎或多或少可以互换。经检查,Localize 控件似乎继承自Literal,但没有提供其他功能。它使用不同的设计器类,在我看来,它的能力不如文字设计器类。

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

【问题讨论】:

    标签: c# asp.net localization controls


    【解决方案1】:

    我很欣赏这已被标记为已回答,但这是另一种查看方式。

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

    这对于网站内容实际上是不同语言的网站的开发可能很有用。因此,您将能够成为一名说英语的程序员,用土耳其语创建一个网站,并且仍然知道 <asp:Label> 应该做什么,而无需学习土耳其语。

    举个例子:

    <asp:Localize runat="server" Text="<%$Resources : Label, Price%>">     
       Price
    </asp:Localize>
    

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

    Key="Price"
    Value="fiyat"
    

    在设计时,IDE 将显示Price(因为&lt;asp:Localize&gt; 元素的内部文本是Price),但网页浏览器中的实际实时视图将解析为fiyat

    因此:

    <div>
       <asp:Localize runat="server" 
                     Text="<%$Resources : Label, Price%>">
                          Price
       </asp:Localize>
    </div>
    

    呈现为:

    <div>fiyat</div>
    

    但在 IDE 设计器中,这将显示为“价格”。

    与标签的区别在于,&lt;asp:Label&gt; 将在 IDE 设计器和运行时解析为 fiyat

    【讨论】:

    • 感谢您的解释。我现在明白为什么这样做很方便了。 +1!
    【解决方案2】:

    这描述得最好:

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

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

    MSDN(底部有很好的描述)

    【讨论】:

    • 您引用的 MSDN 文档指出“Localize 控件继承自 Literal 控件,并且在各个方面都与它相同。在设计时使用 Localize 控件来区分可以本地化的静态文本与其他文本静态文本。”我是否将其解读为“Localize 控件的主要好处是它明显 文字已本地化”?文字控件已经可本地化的。
    猜你喜欢
    • 2019-06-15
    • 2016-11-21
    • 2011-06-22
    • 2015-12-11
    • 2012-02-12
    • 2012-06-27
    • 2010-11-29
    • 2015-12-23
    相关资源
    最近更新 更多