(我不是以英语为母语的人,所以文字可能不自然)
我在做asp.net项目的本地化。 为了提高语言翻译效率,我将.aspx中的字符串提取到全局资源文件中。 (我将资源文件命名为'StringTable.resx'。)
在该过程中,aspx页面中的字符串更改如下:
之前:
Admin ID
之后:
<asp:Literal runat="server" Text="<%$ Resources:StringTable, STR_ADMIN_ID %>">
'After code'看起来有点长,所以我想缩短那段代码。 (例如,删除runat =“server”语句,删除资源名称等...) 在C / C ++案例中,可以使用#define宏。
在.aspx页面中有没有办法做到这一点? (不在文件后面的代码中)
任何想法将不胜感激。
======以下是我自己的答案======================================= =
我正在使用VS2008,所以我不能在.NET 4.0中使用<%:
语法。
我介绍了我的替代解决方案(我不确定这是最佳解决方案)
首先,我在.aspx文件的上半部分添加了这个指令。
<%@ Import Namespace="Resources" %>
(我想设置Namespace =“Resources.StringTable”来删除重复的'StringTable',但是不允许这样做。)
之后,我换了
<asp:Literal runat="server" Text="<%$ Resources:StringTable, STR_ADMIN_ID %>">
要
<%= StringTable.STR_ADMIN_ID %>
关键字'StringTable'仍然存在,但它看起来比原始代码更好。 :)
======添加========================================
但是当使用此方法时,Visual Studio的“设计”预览模式不显示资源字符串..
所以我似乎必须返回原始的长代码。 :(
(该方法适用于具有'刷新'功能的'设计'模式。)
答案 0 :(得分:1)
<%: StringTable.STR_ADMIN_ID %>
...就是你所需要的:)
这使用ASP.NET 4中引入的新<%:
snyntax,如果您使用2或3,则需要<%= Html.Encode(
(MVC)或<%= Server.HtmlEncode
(WebForms)< / p>