-1
如果我沒有弄錯,遠程屬性驗證在Value Change上執行,所以它不需要您按Submit,但Custom Attribute要求我們編寫JQuery來調用適配器什麼時候應該有人使用遠程屬性與自定義屬性
所以我的問題是爲什麼不使用遠程屬性所有的時間?
如果我沒有弄錯,遠程屬性驗證在Value Change上執行,所以它不需要您按Submit,但Custom Attribute要求我們編寫JQuery來調用適配器什麼時候應該有人使用遠程屬性與自定義屬性
所以我的問題是爲什麼不使用遠程屬性所有的時間?
RemoteAttribute
的主要目的是在控制器中執行驗證邏輯,同時保持在同一頁面上。當您需要訪問外部資源時,通常會使用它(例如,在註冊時檢查新用戶是否沒有使用現有的用戶名),但也可能是因爲邏輯非常複雜,不值得複製/將其保存在客戶端腳本中。
關於RemoteAttribute
需要考慮兩件重要的事情。
.blur()
事件編輯控制, 但此後每.keyup()
事件,以便使用 RemoteAttribute
將是一個性能命中如果你寫字的地方可以使用JavaScript執行的驗證邏輯自定義驗證屬性,那麼你的屬性應該從ValidationAttribute
繼承,並實現IClientValidatable
(並且包含必要的腳本來添加客戶端規則),這樣你就可以同時獲得客戶端和服務器端的驗證,而不會對服務器進行不必要的調用。
請參閱The Complete Guide to Validation in ASP.NET MVC 3 - Part 2瞭解實現自定義驗證屬性的好文章。
'RemoteAttribute'用於調用控制器方法來執行驗證。如果可以在使用javascript的客戶端上執行驗證,則不會這樣做(出於性能原因) –
確定您對此有所瞭解,但我正在談論CustomAttribute以及客戶端驗證。 – Stacker
對不起,我不明白你的意見。如果您的自定義ValidationAttribute實現了'IClientValidatable',那麼您將必要的方法添加到'jQuery.validator'中,以便您可以在客戶端上執行客戶端驗證。使用'RemoteAttribute'只會大大降低性能(並不會給你最重要的服務器端驗證) –