0

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

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

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

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

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

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

4

2 に答える 2

2

jQuery Validation Pluginを使用してそれを行うことができます。

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

$.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。そのためにルーティングを「ハッキング」する必要がある理由がわかりません。

于 2009-10-23T18:31:25.400 に答える
0

リモートメソッドでの検証ドキュメントから

    remote: {
      url: "check-email.php",
      type: "post",
      data: {
        username: function() {
         return $("#username").val();
        }
      }
    }
于 2010-12-06T18:23:22.990 に答える