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.ActiveRuleProvider に追加しました。
xVal.ActiveRuleProviders.Providers.Add(new NHibernateValidatorRulesProvider(ValidatorMode.OverrideXmlWithAttribute));
最後に、ビューに次を追加しました。
<%= Html.ClientSideValidation<DomainModel.Entities.MyCustomClass>(Prefix) %>
IE では JavaScript の警告が表示されますが、Firefox では表示されません。無効なフィールドをいくつか入力して送信すると、xVal は起動しません。代わりに PostBack が作成され、サーバー側の検証によってデータが処理されます。
私は何を間違っていますか?xVal 1.0 で動作する xVal サンプル プロジェクトを作成できました...
//編集:私の声明を正確にする必要があります:何かが実際に起こっています:ポストバックを行い、無効なフィールドを赤くマークします(サーバー側の検証で常に行っているため)が、これらのフィールドに何かを書き込むと、色が通常の状態に戻ります。しかし、もう一度値を削除すると、[送信] をクリックしてフォームがポストバックを行うまで何も起こりません... クライアント側の検証コードを削除すると、これは発生しないようです。