0

これは一種のユニークな問題であり、私はまだMVCにかなり慣れていないので、それを説明するために最善を尽くします。サードパーティのグリッドを含むページがあり、各行は「Company」オブジェクトです。ビューのモデルはCompanyManagerオブジェクトであり、検索パラメーターをフィールドとして、リストをグリッドに入力します。ユーザーは編集する行を選択でき、ポップアップが表示されます。グリッドの外側にあるボタンも、新しいレコードを作成するための同じポップアップを開きます。

ポップアップのコンテンツは部分ビューにAddEditあり、そのモデルは「Company」オブジェクトです。他のフィールドに加えて、レコードとして「連絡先」を持つ別のサードパーティグリッドもあります。「連絡先」のサードパーティグリッドから、レコードをシリアル化し、送信時に渡すことができます。

私の問題は、モーダルポップアップを送信することにあります。モーダルポップアップは、成功すると閉じ、会社モデル(またはグリッド内の連絡先)が検証に失敗すると開いたままになります。送信を行うための最良の方法は何ですか?現在、JavaScript関数を呼び出すボタンがあります。この関数では、jqueryを試しまし$.submitたが、フォームがに投稿されるためIndex、ポップアップは関係なく閉じられます。また、Ajax呼び出しに投稿しようと$.postしましたが、このためにコントローラーにJSONの結果が返されます。これは期待どおりに機能しませんでした。JSONをHTMLとして出力するだけです。

4

2 に答える 2

1

次のようにJQUERYでajax呼び出しを行う場合:

                $.ajax({
                    type: 'POST',
                    dataType: 'json',
                    url: '/url/', //url your posting to
                    data: $('#form-addedit').serialize(), //serialize the data in your form
                    success: function (result) {

                       //hide modal
                    }
                });

'result'でJSON結果を取得する必要があります。dataTypeが「json」と言っていることに注意してください。「html」の場合は、htmlが返されることを期待します。結果はsuccess関数呼び出しの変数resultに入れられ、変数を使用して必要な処理を実行し、モーダルを閉じる必要があるかどうかを判断できます。

また、コントローラーで、実際にajax呼び出しを受信して​​いることを確認してください-Request.IsAjaxRequest()

于 2012-08-22T14:36:59.720 に答える
0

これを行うには、通常のボタンを使用してフォームを送信します。これは、他のページはめ込みフォームの場合と同じです。ボタンのIDを設定します。たとえば、「送信」とします。次に、jQueryと.click関数を使用してフォームを検証します。の線に沿った何か

 $("#Submit").click(function () {
                var value = $("#your_field").val();
                if (/*check for invalid condition*/) {
                    $("#Error_message").show();
                    return false;
               return true;
            });

これにより、検証する必要のある各フィールドの値がチェックされます。検証が失敗した場合は、ユーザーとエラーメッセージを表示し、falseを返します。これにより、クリックイベント(フォーム送信)が実行されなくなります。検証チェックに合格した場合は、trueを返し、フォームを送信してウィンドウを閉じるクリックイベントを許可します。

于 2012-08-22T14:42:24.547 に答える