この記事に従って、Validator.IsValid(someEntity) の呼び出しが失敗したときにリソース ファイルからカスタム検証エラー メッセージが返されることを示すテストに合格しました。
これを、この記事で説明されている MVC3 の新しい目立たないクライアント側検証に変換しようとしています。これも多かれ少なかれ機能します-クライアント側の検証は機能するため、NHValidators の配線が適切であると想定できます。次の出力が表示されます。
<input data-val="true" data-val-required="{NotNullNotEmpty}" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Username" data-valmsg-replace="true">
私の問題は、今度は CustomMessageInterpolator が起動されていないことです - リソース文字列がこのプロパティ用に翻訳されていません (まだ中括弧内にあります): {NotNullNotEmpty}.
私のテストと Web の両方で、同じ NHValidator 構成を使用しています。
var cfg = new FluentConfiguration();
cfg
.SetMessageInterpolator<CustomMessageInterpolator>()
.SetCustomResourceManager("MyProject.Core.Resources.ValidationMessages", Assembly.Load("MyProject.Core"))
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load("MyProject.Core").ValidationDefinitions())
参考までに、モデルのスニペットを次に示します。
public class LoginModel
{
[NotNullNotEmpty(Message = "{NotNullNotEmpty}")]
public string Username { get; set; }
ロングショットは知っていますが、どんなアイデアでも大歓迎です!