4

我有一个使用 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 一起运行...

//编辑:我必须准确地说我的陈述:实际发生了一些事情:它会回发并将无效字段标记为红色(因为它一直在使用服务器端验证)但是如果我在这些字段中写入一些内容,颜色变回正常状态。但是如果我然后再次删除该值,则在单击提交并且表单执行回发之前什么都没有发生...如果我删除了客户端验证代码,这似乎不会发生。

4

2 回答 2

2

已解决:我为 TextFields 使用了 [Length(1,50)]-Validator 以确保它们包含一个值。但很明显,xVal 不会将此 Validator 作为例外处理:xVal 允许回发,即使字段为空。为了确保 xVal 检查该字段是否为空,我必须选择[NotEmpty()]属性!

于 2009-09-22T15:16:07.937 回答
2

确保您的验证器不允许空值,MVC 正在针对回发中的空字段验证表单,但 xVal 可能不会在每种情况下都这样做。

于 2009-09-22T15:19:04.393 回答