这两种在aspx/ascx文件中本地化字符串的方法之间的区别?

Bra*_*don 12 c# localization resharper-5.0

当我第一次开始本地化网站时,我只是做了这样的本地化:

<%= Resources.ResourceFile.ResourceName %>
Run Code Online (Sandbox Code Playgroud)

它似乎完美无缺.但是,ReSharper 5.0 Beta就是这样的:

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

它完成的方式有关系吗?

另外,为什么ReSharper将原始文本保留在localize控件中?我认为它是存在的,以防资源文件中的值为空,它可以显示"默认"文本.情况似乎并非如此.删除它并自行关闭本地化控件是否安全?

Jag*_*uar 2

好吧,您不能在 asp 服务器控件上使用 <%= %> 服务器标记。

所以

<asp:Localize Text="<%= Resources.ResourceFile.ResourceName %>" runat="server">
  Value
</asp:Localize>
Run Code Online (Sandbox Code Playgroud)

将导致编译错误。不幸的是,您无法将动态数据传递到服务器控件属性,除非它是数据绑定的,您可以在其中应用<%# %>服务器标记,例如:

<asp:Repeater runat="server">
...
  <asp:Localize Text="<%# Resources.ResourceFile.ResourceName %>" runat="server">
   Value
  </asp:Localize>
...
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

您始终可以将其移至代码隐藏,但这很糟糕。

这个<%$ %>“东西”可以工作,但是如果你按照它去做,准备进入维护地狱(当然,除非我们正在谈论一个 3 页的应用程序......)

就我个人而言,我使用<%= %>并且从不使用 re-sharper 来全球化/本地化我的应用程序。另外,我从未使用过<asp:Localize />服务器控件,也没有遇到任何问题......