5

有沒有辦法掛鉤到MVC3不顯眼的遠程驗證客戶端上,之前數據提交給遠程方法,並從遠程方法返回結果後?事件掛鉤的MVC不顯眼的遠程驗證

我想告訴遠程驗證程序只執行驗證,如果單擊提交按鈕。正常的行爲是多次驗證,例如按鍵,模糊等。這是不好的,因爲有問題的驗證方法需要調用非冪等運算。我需要確保只有在用戶點擊提交按鈕時纔會調用該方法。

如果我可以掛入事件前,我可以在窗體中設置一個字段,將提交按鈕標記爲被點擊或不是。但是,我需要在遠程方法返回驗證結果後重置該標誌。

其他建議?這用於使用ASP.NET成員資格提供程序的Membership.ValidateUser(string username, string password)方法驗證密碼。此方法將遞增FailedPasswordAttemtCount每一個無效的密碼發送時間,所以我不希望它模糊,按鍵等過程中執行

回答

7

您可以覆蓋當前頁面的默認驗證選項:

$.validator.setDefaults({ 
    onkeyup: false, 
    onfocusout: false, 
    onsubmit: true 
}); 
+0

不覆蓋默認設置是否會影響其他表單?或者是否僅將默認範圍設置爲當前加載的頁面? – danludwig

+0

僅限當前加載的頁面的範圍。 –

+0

這真的是最好的解決方案,謝謝。爲了滿足我的好奇心,我的問題的答案是「沒有」或「這不容易」? – danludwig

0

上面的解決方案並沒有解決這個問題。不知何故,驗證器設置沒有被設置。因此,我實施了以下工作:

$(function() { 
    var settings = $.data($('form')[0], 'validator').settings; 
    settings.onkeyup = false; 
});