3

連結された文字列をローカルの .resx ファイルの 1 つに追加できるかどうかを判断しようとしています。この例は、次のことを明確にする必要があります。

(1) テキストが重要なキーワードであるラベル (2) 必要なフィールド検証を含む入力、および (3) 検証を発生させるボタンで構成される単純な ASP.NET Web ページがあるとします。

(lblMyInput)
(txtMyInput)
(rfvMyInput)
(btnSubmit)

次に、このページのリソース ファイル内で、ページのコントロールの文字列をローカライズします。ただし、エラー メッセージには、入力のラベルのリテラル名を使用したいと考えています。これが私の質問です。

PSEUDOCODE: myPage.resx

(1) lblMyInput.Text = "Name"
(2) rfvMyInput.ErrorMessage = "The " + lblMyInput.Text + " field may not be left blank."
(3) btnSubmit.Text = "Submit/Validate"

この種のリソース ファイルの文字列を同じファイル内の別の文字列に連結する方法はありますか?

ありがとう!

4

2 に答える 2

4

これを行う1つの方法は、2つのresx文字列を使用して、次のように機能させることです。

Resource1: "Hello, this is a {0}" Resource2: "Cookie"

そして、文字列パーサーを使用して、Resource2をResource1に配置します。標準的なソリューションですが、開発者が{0}について知っている必要があるため、あまり良いソリューションではありません。また、翻訳に移行すると、ローカリゼーションの問題が発生します。すべての言語に英語と同じ順序の単語があるわけではありません。

于 2010-06-18T20:07:23.200 に答える
1

GetGlobalResourceObject.aspx コード内またはコード ビハインドでメソッドを使用し、途中で文字列リソースを保存する必要があります。

{0} フィールドを空欄にすることはできません。

たとえば、.aspx コードでは次のように試すことができます。

<asp:RequiredFieldValidator ruant="server" ID="rfvMyInput" ErrorMessage="<%= String.Format((string)GetGlobalResourceObject("GlobalResourceBaseName", "GlobalResourceKey"), lblMyInput.Text) %>" />

またはコードビハインドで:

rfvMyInput.ErrorMessage=String.Format((string)GetGlobalResourceObject("GlobalResourceBaseName", "GlobalResourceKey"), lblMyInput.Text);

GlobalResourceBaseNameおよび文字列を変更することにより、GlobalResourceKey使用するものを変更します。

于 2012-06-04T22:16:39.457 に答える