0

(我不是以英语为母语的人,所以文字可能不自然)

我正在做 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 的“设计”预览模式不显示资源字符串。

所以看来我必须回到原来的长代码。:(

(该方法适用于具有“刷新”功能的“设计”模式。)

4

1 回答 1

1
<%: StringTable.STR_ADMIN_ID %>

...是你所需要的全部 :)

这使用了<%:ASP.NET 4 中引入的新语法,如果您使用 2 或 3,您将需要<%= Html.Encode((MVC) 或<%= Server.HtmlEncode(WebForms)

于 2013-10-07T02:05:02.163 回答