我有一个使用 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));
最后,在视图上,我添加了:
<%= Html.ClientSideValidation<DomainModel.Entities.MyCustomClass>(Prefix) %>
我在 IE 中收到 JavaScript 警告,但在 Firefox 中没有。如果现在输入一些无效字段并提交这些字段,xVal 不会触发 - 而是进行 PostBack,服务器端验证会处理数据。
我究竟做错了什么?我已经能够使 xVal 示例项目与 xVal 1.0 一起运行...
//编辑:我必须准确地说我的陈述:实际发生了一些事情:它会回发并将无效字段标记为红色(因为它一直在使用服务器端验证)但是如果我在这些字段中写入一些内容,颜色变回正常状态。但是如果我然后再次删除该值,则在单击提交并且表单执行回发之前什么都没有发生...如果我删除了客户端验证代码,这似乎不会发生。