gpt4 book ai didi

c# - FluentValidation + MVC 扩展(元数据)不能一起工作

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:44 26 4
gpt4 key购买 nike

对于我的项目,我使用了两个库:

  1. 用于 View 模型验证的 FluentValidation (http://fluentvalidation.codeplex.com/)
  2. MVC 扩展 (http://mvcextensions.codeplex.com/) 可以流畅地为我的 View 模型配置元数据

这是我配置它们的方式(这是在容器构建器类中完成的):

    /* Model Metadata Registration */
IEnumerable<IModelMetadataConfiguration> configurations = container.Resolve<IEnumerable<IModelMetadataConfiguration>>();

IModelMetadataRegistry registry = new ModelMetadataRegistry();

configurations.Each(configuration => registry.RegisterModelProperties(configuration.ModelType, configuration.Configurations));

ModelMetadataProviders.Current = new ExtendedModelMetadataProvider(registry);

/* Fluent Validation Configuration */
FluentValidationModelValidatorProvider.Configure(x =>
{
x.ValidatorFactory = container.Resolve<IValidatorFactory>();
x.AddImplicitRequiredValidator = false;
})

现在,当我运行应用程序时,FluentValidationModelValidatorProvider 不会验证模型。取而代之的是使用默认机制。因此我不得不注释掉 FluentValidationModelValidatorProvider 配置并改用这种方法:

    IValidator validator = _validatorFactory.GetValidator(typeof(RegisterUserCommand));
ValidationResult result = validator.Validate(command);

然后:

        if (!result.IsValid)
{
command.Password = String.Empty;
command.ConfirmPassword = String.Empty;

ModelState.Clear();

ModelState.AddModelErrors(result.Errors);

return View(command);
}

但必须有办法让它们协同工作。有什么建议吗?

最佳答案

我使用 FluentValidation,它运行良好。我在 App_Start 调用了以下内容。

public static void Start()
{
var factory = new DependencyResolverValidatorFactory();
var provider = new FluentValidationModelValidatorProvider(factory);

// add remote capabilities
FluentValidationModelValidationFactory validationFactory = (metadata, context, rule, validator) => new RemoteFluentValidationPropertyValidator(metadata, context, rule, validator);
provider.Add(typeof(RemoteValidator), validationFactory);

ModelValidatorProviders.Providers.Add(provider);
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
}

关于c# - FluentValidation + MVC 扩展(元数据)不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com