当我第一次开始对网站进行本地化时,我是这样进行本地化的:
<%= Resources.ResourceFile.ResourceName %>
它似乎工作得很好。然而,ReSharper 5.0 Beta 是这样做的:
<asp:Localize Text="<%$ Resources: ResourceFile, ResourceName %>" runat="server">
Value
</asp:Localize>
完成方式重要吗?
另外,为什么 ReSharper 将原始文本保留在本地化控件中?我认为如果资源文件中的值是空的,它可以显示“默认”文本。情况似乎并非如此。删除它并自行关闭本地化控件是否安全?
最佳答案
嗯,您不能在 asp 服务器控件上使用 <%= %> 服务器标记。
所以
<asp:Localize Text="<%= Resources.ResourceFile.ResourceName %>" runat="server">
Value
</asp:Localize>
会导致编译错误。
不幸的是,您不能将动态数据传递给服务器控件属性,除非它是数据绑定(bind)的,您可以在其中应用 <%# %>
服务器标签,例如:
<asp:Repeater runat="server">
...
<asp:Localize Text="<%# Resources.ResourceFile.ResourceName %>" runat="server">
Value
</asp:Localize>
...
</asp:Repeater>
您始终可以将它移至代码隐藏,但这很糟糕。
<%$ %>
但是,如果您准备进入维护 hell ,“东西”会起作用(当然,除非我们谈论的是一个 3 页的应用程序...)
我个人使用 <%= %>
而且我从不使用 re-sharper 来全局化/本地化我的应用程序。
另外,我从未使用过 <asp:Localize />
服务器控制,我没有遇到任何问题...
关于c# - 这两种在 aspx/ascx 文件中本地化字符串的方法之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883163/