(私は英語を母国語としないので、文章が不自然かもしれません)
asp.net プロジェクトのローカライズを行っています。言語翻訳を効率化するために、.aspx の文字列をグローバル リソース ファイルに抽出しています。(私はリソース ファイルに「StringTable.resx」という名前を付けました。)
その過程で、aspx ページの文字列は次のように変更されます。
前 :
Admin ID
後 :
<asp:Literal runat="server" Text="<%$ Resources:StringTable, STR_ADMIN_ID %>">
「アフターコード」が少し長く見えるので、そのコードを短くしたいと思います。(たとえば、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 の「デザイン」プレビュー モードでリソース文字列が表示されません。
だから、元の長いコードに戻さなければならないようです。:(
( この方法は、「リフレッシュ」機能を備えた「デザイン」モードでうまく機能します。)