asp.net-mvc-3 – 不明显的客户端验证规则中的验证类型名称必须
这是指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的提供程序添加到一起,并且我正在有效地将相同的验证器类注册两次,因此有关非唯一的“验证类型名称”的错误。 另一种使用多个提供商的问题jquery – Fluent Validations. Error: Validation type names in unobtrusive client validation rules must be unique的问题可能导致上述问题。每个提供者都可以配置为将“隐含的必需属性”添加到“值类型”(即查看不可为空的模型属性)。为了解决这个特殊的问题,我可以将我的代码改成以下内容,以便所有的提供者都不会添加隐式的必需属性: 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-web-api – 当我使用IFormFile时缺少一个结束括号
- .net – 单元测试api控制器的示例代码
- asp.net-mvc-3 – 我可以在ASp.Net MVC中使用System.Web.UI
- asp.net – 如何阅读maxAllowedContentLength
- asp.net-mvc – ASP.NET MVC Web API缓存控制头部没有发送响
- asp.net-mvc – 我想拿最后4条记录,但总是得到前4条记录
- asp.net-mvc – 如何在启动应用程序之前在system.web.mvc中
- asp.net-mvc-4 – 使用razor创建数字向上或值控制
- asp.net-mvc – 如何为ASP.NET MVC站点定义catch-all路由?
- asp.net-mvc – 没有App_Data,Asp.net mvc无法运行