2015-11-09 40 views
0

我正在學習如何使用C# remote validation。我遇到的問題是驗證呼叫發生多次,表單不再提交。當我註釋掉遠程驗證屬性時,它可以正常工作,或者如果該字段爲空,它就可以正常工作(正如在提交表單時一樣)。以下是我如何定義Remote屬性。遠程驗證觸發多次

[DisplayName("User Type (Logged In)")] 
[UIHint("DropDownList")] 
[Remote("UserTypeCheck", "Settings", AdditionalFields = "Id,Context,Key")] 
public List<int> UserTypeIds { get; set; } 

檢查的DOM中我看到data-val-remote-url被設置正確

enter image description here

但是當我點擊提交,並期待在開發者控制檯中,我可以看到,它正在三個電話第二個是中止/取消。我不確定是什麼導致了這一點。它也沒有提交表單甚至認爲該事件被解僱,因爲我加入這個處理程序,以表單的提交事件

$form.submit(function() { 
    console.log("submit got fired"); 
    console.log(this); 
}); 

回傳

enter image description here

回答

0

原來我離開了缺少一條信息。從客戶端到服務器的遠程驗證由jquery.validate.js完成。這就是說,jquery.validate使用了一個異步調用,在我們再次嘗試提交之前,這個異步調用沒有及時完成,這導致它重新驗證該字段。在定義遠程規則時,通過設置async:false,我可以停止後續提交。我從mlynch comments here得知了這個想法