【发布时间】:2012-03-17 00:34:47
【问题描述】:
不显眼的客户端验证规则中的验证类型名称必须是 独特。不止一次看到以下验证类型: 必填
这里指的是 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 配置有问题?
【问题讨论】:
-
我也在使用 dataannotationsextensions 并且没有任何问题。我看到的唯一区别是您使用了我从未使用过的“AdditionalMetadata”属性。尝试删除它,看看它是否仍然错误?
-
我找到了这个链接,它可能会有所启发。 fluentvalidation.codeplex.com/workitem/7072
-
从根
Web.config中的appSettings中删除<add key="ClientValidationEnabled" value="true"/>和<add key="UnobtrusiveJavaScriptEnabled" value="true"/>解决了问题。 -
我看到其他人说也解决了这个问题,但是这样做会丢失客户端验证。如果你可以没有它,那么这不是问题。但最好不必将模型发布到服务器只是为了运行模型验证并在失败时返回给客户端。
-
迟到了(至少可以这么说),但是...在您的控制器中,您可以监视/跟踪
ModelValidatorProviders.Providers的内容吗?HTMLHelper(这是引发此错误的原因)只能通过咨询这些提供程序来获得不显眼的验证规则,如果DataAnnotationExtensions没有导致它(我们假设默认的DataAnnotationModelValidatorProvider也不是它自己导致的) ),其中应该有另一个提供程序,才会发生此错误。
标签: asp.net-mvc-3 iis-7.5 unobtrusive-validation