我有一个使用 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/