1

部分ビューでロードするために、remoteurl で Twitter ブートストラップ モーダルを使用しています。この場合は、パスワードのリセット フォームです。

私は MVC モデル バインディングを使用しており、モデルにデータ注釈を設定して、クライアント側の検証を部分ビューで実行できるようにしています。

ただし、これはクライアント側の検証を開始しません。サーバー側の検証は問題ありませんが、何らかの理由でこのフォームがモーダル内にある場合、クライアント側の検証が呼び出されません。

jquery 検証およびブートストラップ スクリプトは、モーダルを含むメイン ページで参照されます。

ただし、部分ビューの末尾に jquery および jquery 検証スクリプト参照を追加しました。これにより、クライアント側の検証が確実に呼び出されます。

これらのスクリプトを、モーダルに読み込まれる部分ビューに含める必要があるのはなぜですか?

このように動作するので、そのままにしておけばよかったのですが、そうすると、さまざまな remoteUrl を動的にロードする必要があるときに、Twitter ブートストラップ モーダルで別の問題が発生します。

jquery スクリプトが部分ビューでも参照されると、モーダルが最初に起動しますが、その後はエラーが発生します。クライアント側の検証は得られませんが、問題なくモーダルを複数回開くことができます。

モーダルを呼び出すために使用しているコードは、インターネット検索から見つけて、モーダルに渡されたさまざまなリモート URL のモーダル本体を更新しようとします。

$('#mymodal').removeData('modal');
$('#mymodal').modal({ remote: self.remoteUrl, keyboard: true });

次に発生するエラーは、$('#mymodal').modal is null. しかし、それは常に初めて機能します。上記で詳しく説明したように、これは部分ビューでの jquery スクリプトの参照が原因であると考えています。

これら2つの問題のいずれかについて考えている人はいますか。

4

1 に答える 1

3

最終的にこれを機能させることができると思われる唯一の方法は、部分ビューがロードされて次を呼び出すときでした。

$('#frmName').removeData("validator");
$('#frmName').removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse('#frmName');

これにより、クライアント側の検証が呼び出されたようです。

于 2012-12-18T10:01:42.857 に答える