ASP.NET中内联标记的全球化差异

时间:2011-05-16 13:13:38

标签: asp.net globalization

使用内联写入标记而不是资源标记之间是否有任何优势/缺点?例如:

<%=Resources.Site.SampleString %>

在任何MSDN示例中看到的资源标记(表达式标记):

<asp:Literal id="Literal1" runat="server" text="<%$ Resources:Site, SampleString %>" />

我发现第一个选项更容易使用,它有智能感知功能,但它可能不会起作用吗?

2 个答案:

答案 0 :(得分:5)

这些方法的功能完全相同。后者简称第一个;有一个原因是为什么在后台生成强类型资源访问代码。因此,您可以使用任何方法。

顺便说一句,还有另一种方法 - 使用meta:resourcekey attribute。所以你应该写:

<asp:Literal id="Literal1" runat="server"
             meta:resourcekey="SampleString" text="Default one" />

这一切都应该完全相同。

隐式本地化

编辑

我忘了提到的是,使用meta:resourcekey必须满足某些条件。条件是:

  • 值来自App_LocalResources,因此相关资源文件需要存在
  • 相关资源文件名必须为pagename.resx,例如:Default.aspx.resx,Default.aspx.es.resx
  • 资源文件必须包含resourcekey.propertyname形式的密钥,例如SampleString.Text,SampleString.ID(尽管我不会本地化控件ID)
  • 由于资源的生成方式,上述密钥必须存在于不变资源文件(Default.aspx.resx)中,否则将无法进行本地化。

答案 1 :(得分:1)

经过一段时间后,我意识到<%=Resources.Site.SampleString %>方法没有设计师支持(这是可以理解的)。这不会打扰我,但这是一个区别(对于未来的读者)。

因此,如果您需要或希望获得设计师支持,则需要第二个选项。