jQueryとASP.NET MVCでマルチパラメーターAJAXフォーム検証を行う適切な方法は何ですか?

StackOverflow https://stackoverflow.com/questions/1615144

質問

特定の会社IDの電子メールアドレスが既に存在するかどうかを確認する必要があるWebサイトの登録フォームがあります。ユーザーがメールフィールドをタブで移動するかクリックすると(ぼかしイベント)、jQueryをオフにしてAJAXリクエストを実行し、別のアドレスを選択する必要があることをユーザーに警告できるようにします。

コントローラーには、次のようなメソッドがあります:

public JsonResult IsEmailValid(int companyId, string customerNumber)
{            
  return Json(...);
}

これを機能させるには、ルートを更新して、直接 / Home / IsEmailValid と2つのパラメーター {companyId} および {customerNumberを指すようにする必要があります。 } 。これは、「ハッキング」しているようです。ルーティングシステムの周りにあり、おそらくよりクリーンな代替手段があると推測しています。

「適切な」ものはありますかまたはこのタスクを実行するための推奨される方法は?

編集:ルートの意味は、URL(/ Home / IsEmailValid / {companyId} / {customerNumber})の追加パラメーター({customerNumber})を渡すと、デフォルトのルートマッピングでは機能しないことです。

役に立ちましたか?

解決

jQuery検証プラグインを使用して、これを実行できます。

次のように、独自のメソッドを実装する必要があります:

$.validator.addMethod("checkCompanyEmail", function(value, element) {
    var email = value;
    var companyID = //get the companyID
    var result;
    //post the data to server side and process the result and return it
    return result;
}, "That company email is already taken.");

次に検証方法を登録します:

$("#the-form").validate({
   rules: { email: { required: true, "checkCompanyEmail" : true } } 
});

PS。 「ハッキング」する必要がある理由がわかりません。そのためのルーティングがあります。

他のヒント

リモートメソッド

の下の検証ドキュメントから
    remote: {
      url: "check-email.php",
      type: "post",
      data: {
        username: function() {
         return $("#username").val();
        }
      }
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top