asp.net-mvc - 带有 nHibernate.validator 的 MVC.NET 中的 xVal 不会触发客户端验证

标签 asp.net-mvc xval nhibernate-validator client-side-validation

我有一个使用 NHibernate 和 NHibernate.Validator 的 ASP.NET MVC 项目,我想使用 xVal 1.0(最新版本)。
我将请求的脚本添加到项目中并在 Site.Master 中引用它:

    <script type="text/javascript" src="<%= ResolveUrl("~/Scripts/jquery-1.3.2.js")%>"></script>
    <script type="text/javascript" src="<%= ResolveUrl("~/Scripts/jquery.validate.js")%>"></script>
    <script type="text/javascript" src="<%= ResolveUrl("~/Scripts/xVal.jquery.validate.js")%>"></script>

然后我将 NHibernateValidatorRulesProvider 添加到 Global.asax Application_OnStart() 中的 xVal.ActiveRuleProviders :
xVal.ActiveRuleProviders.Providers.Add(new NHibernateValidatorRulesProvider(ValidatorMode.OverrideXmlWithAttribute));

最后,在 View 上,我添加了:
<%= Html.ClientSideValidation<DomainModel.Entities.MyCustomClass>(Prefix) %>

我在 IE 中收到 JavaScript 警告,但在 Firefox 中没有。如果现在输入一些无效字段并提交这些字段,xVal 不会触发 - 而是进行回发并且服务器端验证处理数据。

我究竟做错了什么?我已经能够使 xVal 示例项目与 xVal 1.0 一起运行...

//编辑:我必须精确我的声明:确实发生了一些事情:它进行回发并将无效字段标记为红色(因为它一直在使用服务器端验证)但是如果我在这些字段中写入一些内容,颜色变回正常状态。但是,如果我再次删除该值,则在单击“提交”之前不会发生任何事情,并且表单会再次回发...如果我删除客户端验证代码,这似乎不会发生。

最佳答案

解决了:
我对 TextField 使用了 [Length(1,50)]-Validator 来确保它们包含一个值。但很明显,xVal 不处理这个 Validator 作为异常(exception):xVal 允许回发,即使字段为空。为了确保 xVal 检查该字段是否为空,我必须选择 [NotEmpty()] 属性!

关于asp.net-mvc - 带有 nHibernate.validator 的 MVC.NET 中的 xVal 不会触发客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1459009/

相关文章:

asp.net - 使用 ASP.NET WebForms 的 xVal 示例?

NHibernate 和 NHibernate 验证

c# - 是否应在 Web 应用程序中禁用 Entity Framework 延迟加载?

asp.net-mvc - SharePoint 和 MVC

asp.net-mvc - 使用 session 变量时有多少用户过多?

nhibernate - 使用 Nuget 升级 NHibernate 和 NHibernate Validator

NHibernate 验证器性能

asp.net-mvc - 获取用于 CDN 的 ASP.NET 包 URL?

javascript - 如何将 jQuery Validation 插件与元数据、jQuery Forms 和 xVal 一起使用?

asp.net-mvc - ASP.NET MVC ValidateInput(false)停止使用xMl和[正则表达式] DataAnnotation