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 MVC中实现Disqus?
- 如何为ASP.NET身份设置密码规则?
- asp.net-mvc – MVC 4提供的反伪造令牌是为用户“”而是当前
- asp.net – DropDownList获取底层对象
- .net – 使用FileStreamResult,MemoryStream是如何关闭的?
- asp.net – 在web用户控件中传递int数组作为参数
- asp.net – 如何调用一个特定的UpdatePanel加载后的客户端J
- asp.net-mvc – ASP.NET MVC如何指定View页面驻留在哪个文件
- asp.net-web-api – 自定义身份验证asp.net核心web api
- asp.net-web-api – Web API 2是否可以通过编程方式加载路由
