0

asp net mvc 3アプリケーションに構造マップを実装した独自のValidatorFactoryがあります。

public class StructureMapValidatorFactory : ValidatorFactoryBase
{
    public override IValidator CreateInstance(Type validatorType)
    {
        return ObjectFactory.TryGetInstance(validatorType) as IValidator;
    }
}

そして、グローバルアサックスで...

FluentValidationModelValidatorProvider.Configure(provider => 
{ 
  provider.ValidatorFactory = new StructureMapValidatorFactory(); 
});

まあ、この組み合わせではクライアント検証は機能しません。標準のプロバイダー構成を使用すると、クライアント検証は正常に機能します。

ここに回避策はありますか?

4

2 に答える 2

1

バリデーターを解決するために、DI フレームワークが適切に構成されていることを確認してください。null を返す場合 ObjectFactory.TryGetInstance(validatorType)、モデルに関連付けられたバリデータがなく、メタデータが発行されないため、機能しません。

于 2012-08-20T06:19:02.653 に答える
0

最後に、ブーストラップでConfigureメソッドを呼び出すのを忘れました。それで、

ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new StructureMapValidatorFactory()));

その後

FluentValidationModelValidatorProvider.Configure();
于 2012-08-20T09:19:32.817 に答える