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.ActiveRuleProvider に追加しました。

xVal.ActiveRuleProviders.Providers.Add(new NHibernateValidatorRulesProvider(ValidatorMode.OverrideXmlWithAttribute));

最後に、ビューに次を追加しました。

<%= Html.ClientSideValidation<DomainModel.Entities.MyCustomClass>(Prefix) %>

IE では JavaScript の警告が表示されますが、Firefox では表示されません。無効なフィールドをいくつか入力して送信すると、xVal は起動しません。代わりに PostBack が作成され、サーバー側の検証によってデータが処理されます。

私は何を間違っていますか?xVal 1.0 で動作する xVal サンプル プロジェクトを作成できました...

//編集:私の声明を正確にする必要があります:何かが実際に起こっています:ポストバックを行い、無効なフィールドを赤くマークします(サーバー側の検証で常に行っているため)が、これらのフィールドに何かを書き込むと、色が通常の状態に戻ります。しかし、もう一度値を削除すると、[送信] をクリックしてフォームがポストバックを行うまで何も起こりません... クライアント側の検証コードを削除すると、これは発生しないようです。

4

2 に答える 2

2

解決済み: TextField に [Length(1,50)]-Validator を使用して、値が含まれていることを確認しました。しかし明らかに、xVal はこの Validator を例外として処理しません。xVal は、フィールドが空の場合でもポストバックを許可します。xVal がフィールドが空かどうかを確認するために、[NotEmpty()]属性を選択する必要がありました。

于 2009-09-22T15:16:07.937 に答える
2

バリデーターが null を許可していないことを確認してください。MVC はポストバックで空のフィールドに対してフォームを検証していますが、xVal はすべての場合にそれを行うとは限りません。

于 2009-09-22T15:19:04.393 に答える