3

jQuery 検証を使用して、AJAX を使用して取得したフォームが取り込まれたモーダル KendoWindow にある Kendo ウィジェット (特にドロップダウンリスト) を検証する際に問題が発生しています。検証は、非表示フィールド (ドロップダウン リスト、テキストエリアなど) を使用する剣道ウィジェットを除くすべてに対して美しく機能しますモーダル KendoWindow で。解決策は次のようになります。

$.validator.setDefaults({ ignore: ""});

しかし、私の場合はうまくいきません。ajax経由でモーダルウィンドウをロードする私の部分的なビューからの私のコードは次のとおりです:

    @model ProductManagement.Models.BaseModel

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

    <script type="text/javascript">        
        $(function () {
            $.validator.setDefaults({ ignore: "" });
        });
    </script>

    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)...

これを行うためのトリックはありますか?どんな助けでも大歓迎です!

4

1 に答える 1

3

うわー、私はこれに本当に多くの時間を費やしましたが、うまくいきました. もちろん、答えは非常に簡単です。要点は次のとおりです。

jQuery 検証 (MVC 4) を使用するように Kendo UI ポップアップ ウィンドウを構成するには:

  1. jQuery Validation Plugin 1.8.1を使用してこれを機能させました。バージョン>1.9を使用してこれを行う方法がわかりません。

  2. _Layout.cshtml で、ドキュメント準備完了関数に次を追加します。
    $.validator.setDefaults({ ignore: "" }); 編集:これは正しくありません。バージョン 1.8.1 では必要ありません。

  3. ポップアップ フォームを含む部分ビューで、jquery.validate.min.js と jquery.validate.unobtrusive.min.js を参照します。

  4. フォームでは、すべてのフィールドに正しい名前を付ける必要があります。たとえば、フィールド名が "VM_ProductInfo.Product_ID"、"VM_ProductInfo.Product_Name" などのように見えるビュー モデルを使用しています。 " プレフィックス)、検証は部分的にのみ正しく機能し、フォームはエラーにもかかわらず送信されます。

  5. フォームで、非表示フィールドの ValidationMessageFor を含めます。たとえば、Product_ID フィールドを非表示にする場合でも、次のように検証を含める必要があります。

    @Html.HiddenFor(model => model.Product_ID) @Html.ValidationMessageFor(model => model.Product_ID)

振り返ってみると、上記の 4 番と 5 番が私を最も悲しませたものです。これらをチェックすることを知っていれば、何時間もヘッドバンギングを節約できたでしょう。

これは試行錯誤のソリューションでした。良い方法をご存知の方回答お願いします。

補足: Kendo のドキュメントによると、ドロップダウン リスト ウィジェットの名前の指定は必須です。少なくとも私が知る限りではそうではありません。.Name を省略することにより、フォームは、フォームの残りの部分と一貫性のある名前付けで構築されます。

于 2013-04-27T05:05:10.777 に答える