【发布时间】:2012-08-07 07:33:38
【问题描述】:
我刚刚阅读了 Literal 控件和 Localize 之间的区别
我知道这个问题已经被问过here,但那里提出的回复对我来说不起作用。
根据 MSDN:
Localize 控件继承自 Literal 控件,并且在各个方面都与之相同。 Localize 控件在设计时用于区分可以本地化的静态文本与其他静态文本。
我目前对 Localize 和 Literal 控件的理解是,前者在 Visual Studio 的设计时呈现默认值,而后者将呈现 计算值,例如资源的内容文件。
我创建了一个小页面来证明这一点,但我找不到任何区别,这就是我尝试的原因:
<div><asp:Localize ID="Localize1" Text="<%$Resources: Resource, String1 %>" runat="server" >String1</asp:Localize></div>
<div><asp:Literal ID="Literal1" Text="<%$Resources: Resource, String1 %>" runat="server" >String1</asp:Literal></div>
<div><asp:Label ID="Label1" Text="<%$Resources: Resource, String1 %>" runat="server" >String1</asp:Label></div>
以上代码呈现如下:
<div>ploop</div>
<div>ploop</div>
<div><span id="Label1">ploop</span></div>
到目前为止一切都很好,但我希望在设计时发现 Visual Studio 的不同之处,但我没有,这是 Visual Studio 输出
作为补充说明,我知道在使用资源时我可以使用隐式资源(在使用本地资源时),在设计时使用默认值。示例:
<asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource1"
Text="Label"></asp:Label>
使用上面的代码,我得到了在设计时在 Visual Studio 中按预期呈现的文本 Label。
那么Literal 和Localize 控件之间有什么区别?,我错过了什么?
注意:我使用网站和 Web 应用程序进行了测试
【问题讨论】:
-
它们是相同的。 Localize 中没有添加任何代码。为什么你会期待不同的行为?
-
因为如果它们存在,一定是有原因的。我只是想知道选择它们的原因
-
我觉得原因是MS让我们有更多的选择。
-
ja,确实不错,但如果有选择,就必须有一个判别器才能做出正确的选择,我想知道那个原因