2011-12-30 9 views
1

jquery ajaxを使用してページにフォームをロードしています。一旦ロードされると、私は<%Html.EnableClientValidation(); %>が通常どおり動作することを望んでいました。そうではなく、最初に設定された後にフォームがDOMに追加され、クライアント側の検証スクリプトがhanldeの "ライブ"コンテンツに配線されていないためであると推測しています。.NET MVC 2クライアント側の検証とAjaxがロードされたフォーム

この仮定は正しいですか?回避策はありますか?私は、クライアント側の検証を処理するために、次の主要なスクリプトを使用しています

....私は使っていない午前

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 

注...を含めることが、

<script src="../../Scripts/jquery.validate.js" type="text/javascript"></script> 

このスクリプトは違いがないようです。

また、私は<%Html.EnableClientValidation(); %>を私のフォームの上に置いているので、その指示はajax呼び出しによってフォームとともにロードされます。

+0

タグを手動で入力するのではなく、<%using(Html.BeginForm(...)}%>を使用するように読み込んでいたフォームを変更したことがあります。このサイトhttp://blogs.teamb.com/craigstuntz/2010/09/09/38636/これは、フォームの要素に適切なクラスが挿入されるようにしましたが、挿入されるはずのスクリプト – mikerennick

答えて

1

この仮定は正しいですか?

はい、この仮定は正しいです。

回避策はありますか?

はい、あります。 following blog postを見てください。これは、動的にロードされたコンテンツのクライアント側の検証を強制する方法を示しています。

+0

私はブログの記事を読んでいますが、何かが欠けていない限り、解決策の要点はこのコード行のフォームのサブミットアクションの検証エラーをチェックすることです。 ..if(!Sys.Mvc.FormContext.getValidationForForm(this).validate( 'submit')。length){...}これは、フォームがエラーで送信されるのを防ぎますが、ユーザーとしてエラーを強調表示しませんフィールド間を移動し、tには表示されませんフォームのエラーがどこにあるのかをユーザーに知らせます。私は何か見落としてますか?また、上の私のコメントを参照してください...検証のためのスクリプトは、フォームの下に読み込まれませんなぜですか? – mikerennick

関連する問題