0

クライアント側の検証を伴うフォーム送信にMVC3Ajax.BeginForm呼び出しを使用しています。入力フィールドの1つは郵便番号(郵便番号)であり、フォーマットを検証するだけでなく、約200万エントリのデータベーステーブルに存在するかどうかも確認したいと思います。

私が選んだ解決策は、BeginForm OnBegin呼び出しを使用して、送信前にルックアップを実行し、郵便番号が存在しない場合は、それを受け入れるか再入力するかをユーザーに提供することでした。別のAjax呼び出しを使用して郵便番号検索を実行しています

問題は、内部Ajax呼び出しが返されるのを待って、外部呼び出しに戻る前に応答を処理する必要があることですが、これは非同期呼び出しであるため、内部Ajaxが完了する前に関数が続行します。

いくつかの好ましくない解決策を見ることができます。たとえば、内部のAjax呼び出しを同期化する、送信ボタンのクリックイベントをキャッチするなどですが、誰もがクリーンで邪魔にならない解決策を提案しています。

ありがとうございました。

4

1 に答える 1

1

この[Remote]属性を使用して、リモート検証を実行できます。ビューモデルの対応するプロパティをこの属性で装飾し、実際の検証を実行するコントローラーアクションを指定するだけです。

明らかに、どのソリューションを選択しても、フォームがサーバーに送信されたら、絶対に同じチェックを実行する必要があります。これは、最初にAJAXでチェックし、フォームが実際に送信されるまでに、データベースデータが変更され、最初に有効だったものが変更される可能性があるためです。もう有効ではない。

于 2012-10-08T09:48:30.443 に答える