0

この記事に従って、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; }

ロングショットは知っていますが、どんなアイデアでも大歓迎です!

4

2 に答える 2

0

コードを表示できますか? ある種のカスタムを使用したと思いますModelValidatorProviderか?

あなたが説明したように機能するものがあります。ここで説明されている行に沿って、カスタムAssociatedValidatorProviderとを書く必要がありましたModelValidator

http://weblogs.asp.net/srkirkland/archive/2010/07/20/nhibernate-client-validator-asp-net-mvc-2-model-validation.aspx

ただし、上記の記事の MessageOrDefault メソッドを変更して、NHibernate Validator を使用しDefaultMessageInterpolatorてメッセージを変換します。

何かを機能させるためのほとんどの方法が得られたようでDefaultMessageInterpolator、メッセージを翻訳するために を使用する必要がありました。

于 2011-03-10T20:04:40.757 に答える