2017-03-12 7 views
0

データアノテーション検証でASP .Net Core Webアプリケーションを作成します。モデルのプロパティを記述する属性では、ErrorMessageResourceTypeとErrorMessageResourceNameを定義します。ローカライズされたリソース - .resxファイル内の複数のリソースにアクセスできない

リソースファイルは、メインアプリケーションソリューション外の別のプロジェクトに配置されます。 (Visual Studioの2017コミュニティエディタのサポートをDOTNETのCLIを使用して)

私は私のモデルで:リソースプロジェクトで

[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation), 
        ErrorMessageResourceName = "EmptyField")] 
[StringLength(30, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation), 
        ErrorMessageResourceName = "NameMaxLength")] 
public string Name {get; set;} 

私は、各言語ごとに単一の.resxファイルすなわちNewPetDataValidation.en.resx、NewPetDataValidationを作成.de.resx。

ビジュアルスタジオよりリソースエディタリソース名を含む各ファイルにリソース文字列を追加しました。

英語: 名前:EmptyField値:空欄!

ドイツ語: 名前:EmptyField値:Leer Feld!

等...カミソリで

は私が持っている表示:Html.ValidationMessageFor @ (モデル=> Model.Name、ヌル、新しい{@styleは= "色:赤"})

すべて特定の.resxファイル内の複数のリソース文字列をモデルでアクセスしないと、正常に動作します。私は、ErrorMessageResourceNameが特定のリソース名と一致することを肯定的です。

一方、翻訳されたすべてのフレーズに対して別々の.resxファイルを作成すると、アプリケーションが動作しています。しかし、私は非常に多くの.resxファイルを作成することは良い考えではないと思います。

ご協力いただきありがとうございます。

答えて

1

私の間違いは、Visual Studioで作成されたデフォルトのリソースの名前を変更することでした。

の作業手順:

  1. は、デフォルトのリソースMyResource.resx作成します(言語/文化サフィックスのない構文を、それは別のプロジェクトから参照することができ、クラスファイルを生成します)

  2. 新しいmyresourceでの追加.en.resx、MyResource.de.resx ...問題のすべての言語用です。

関連する問題