2012-10-08 52 views
0

我正在使用MVC 3 Ajax.BeginForm呼籲表單提交與客戶端驗證調用。其中一個輸入字段是郵政編碼(郵政編碼),以及驗證格式,我也想檢查它是否存在於大約200萬個條目的數據庫表中。嵌套的jQuery AJAX使用MVC 3和依賴剃刀

我所選擇的解決方案是使用所涉及的BeginForm OnBegin調用提交之前執行查找,並且如果所述後置碼不存在向用戶提供接受它或重新進入的選項。我正在執行使用另一個Ajax調用的郵政編碼查詢

問題是,我需要等待內部Ajax調用返回並處理響應,然後再返回到外部調用,但因爲這是異步調用,所以函數是在內部Ajax完成之前繼續。

我可以看到幾個非優選的解決方案,例如,使內部的Ajax調用同步或捕獲提交按鈕單擊事件,但沒有人有一個乾淨的不顯眼的解決方案的建議。

謝謝。

回答

1

您可以使用[Remote]屬性來執行遠程驗證。您只需使用此屬性在視圖模型上修飾相應的屬性,然後指定將執行實際驗證的控制器操作。

顯然,無論您選擇哪種解決方案,您絕對必須因爲您最初檢查與AJAX和形式實際上是提交你的數據庫中的數據可能會更改時間的時間執行相同的檢查,一旦形式在服務器上提交最初有效的內容不再有效。

+0

感謝上述和其他地方的相關幫助。另一半問題是,如果返回值爲false,我需要讓用戶覆蓋該驗證並確認使用數據庫中未找到的值。 –