0

(私は英語を母国語としないので、文章が不自然かもしれません)

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 の「デザイン」プレビュー モードでリソース文字列が表示されません。

だから、元の長いコードに戻さなければならないようです。:(

( この方法は、「リフレッシュ」機能を備えた「デザイン」モードでうまく機能します。)

4

1 に答える 1

1
<%: StringTable.STR_ADMIN_ID %>

...は、あなたが必要とすることすべてです :)

これは、ASP.NET 4 で導入された新しい<%:snyntax を使用します。2 または 3 を使用している場合は、<%= Html.Encode((MVC) または<%= Server.HtmlEncode(WebForms)が必要です。

于 2013-10-07T02:05:02.163 に答える