2009-10-23 24 views
0

我有一個網站的註冊表格,需要檢查給定的公司ID是否已經存在電子郵件地址。當用戶在電子郵件字段(模糊事件)中選中或單擊時,我希望jQuery關閉並執行AJAX請求,以便我可以警告用戶他們需要選擇另一個地址。用jQuery和ASP.NET MVC做多參數AJAX表單驗證的正確方法是什麼?

在我的控制,我有一個方法,像這樣:

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

爲了使這項工作,我需要更新我的路線直接指向/Home/IsEmailValid和兩個參數{companyId}{customerNumber}。這似乎就像我在路由系統中「黑客攻擊」一樣,我猜測也許有更清晰的選擇。

有沒有一個「適當的」或推薦的方式來完成這項任務?

編輯:我的意思是路由是在URL(/ Home/IsEmailValid/{companyId}/{customerNumber})中傳遞額外參數({customerNumber})不會與默認路由映射一起使用。

+1

下,你是什麼意思「更新我的路線直接指向到/ home/IsEmailValid」嗎?你可以使用jQuery Validation的remote屬性來完成你描述的內容。 – 2009-10-23 18:31:51

+0

如果我使用GET/Home/IsValidEmail/{companyId}/{customerNumber},它將不會調用我在那裏列出的方法,除非我更新路由表(據我所知儘可能不會上班)。我將搜索驗證遠程屬性以獲取更多信息。 – Jedidja 2009-10-23 18:37:21

回答

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。我不明白你爲什麼需要爲此「繞開」路由。

0

從驗證文檔remote method

remote: { 
     url: "check-email.php", 
     type: "post", 
     data: { 
     username: function() { 
     return $("#username").val(); 
     } 
     } 
    } 
相關問題