gpt4 book ai didi

asp.net-mvc-3 - 不打扰的客户端验证规则中的验证类型名称必须唯一

转载 作者:行者123 更新时间:2023-12-03 08:30:03 27 4
gpt4 key购买 nike

Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required



这是指EmailAddress属性,在这里:
public class LoginModel
{
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
[AdditionalMetadata("Style", "Wide")]
public string EmailAddress { get; set; }

[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
[AdditionalMetadata("Style", "Wide")]
public string Password { get; set; }
}

我在这里没有两次使用相同类型的验证规则。这在本地工作正常,但在部署到服务器时却无法正常工作。这是怎么回事?

我确实添加了对 DataAnnotationExtensions( http://dataannotationsextensions.org)的引用,这可能会引起问题吗?

编辑:删除引用不能解决问题。似乎IIS配置可能搞砸了?

最佳答案

关于这个问题的JimmiTh's comment为我提供了一个重要的见解,可以自己解决这个问题。

就我而言,我确实确实向ModelValidatorProviders添加了一个附加提供程序。我在Global.asax.cs文件中使用以下代码添加了一个自定义验证工厂(使用Fluent Validation):

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

但是使用多个提供程序不一定有问题。似乎有问题的是,如果多个提供程序提供了相同的验证器,因为它将多次注册相同的规则,从而导致Microsoft不引人注目的验证代码出现上述问题。

我最终决定从同一文件中删除以下行,因为我决定不需要使用这两个提供程序:
FluentValidationModelValidatorProvider.Configure();

上面的 Configure方法本身在 ModelValidatorProviders中添加了一个提供程序,并且我实际上两次注册了相同的验证器类,因此出现了关于非唯一“验证类型名称”的错误。

SO问题 jquery - Fluent Validations. Error: Validation type names in unobtrusive client validation rules must be unique指出了使用多个提供程序可能导致上述问题的另一种方式。每个提供程序都可以配置为向“值类型”添加“隐式必需属性”(即,不可为null的 View 模型属性)。要解决此特定问题,我可以将代码更改为以下代码,以便所有提供程序都不添加隐式必需属性:
FluentValidationModelValidatorProvider.Configure(
provider => provider.AddImplicitRequiredValidator = false);


DependencyResolverValidatorFactory validatorFactory =
new DependencyResolverValidatorFactory();

FluentValidationModelValidatorProvider validatorFactoryProvider =
new FluentValidationModelValidatorProvider(validatorFactory);

validatorFactoryProvider.AddImplicitRequiredValidator = false;
ModelValidatorProviders.Providers.Add(validatorFactoryProvider);


DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

关于asp.net-mvc-3 - 不打扰的客户端验证规则中的验证类型名称必须唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746186/

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