2011-05-11 66 views
2

Scott Guthrie blogged about ASP.NET MVC 2: Model Validation一年多前,在他的文章中,控制器被調用ModelState.IsValid-method調用。從那以後,我們有了ASP.NET MVC 3,其中包括quite big changes to the validationASP.NET MVC 3驗證:禁用JavaScript時DataAnnotation屬性是無用的嗎?

但是有要求調用ModelState.IsValid仍然保持不變?如果站點訪問者禁用JavaScript並且站點開發人員忘記檢查ModelState.IsValid的值,那麼是否所有DataAnnotation屬性都沒有用處?

如果是,是否有解決方法?例如,是否有可能註冊一個全局過濾器,它總是記得檢查模型的有效性事件,如果編碼器沒有?

+0

現在很少有人找到JavaScript關閉的瀏覽器 – balexandre 2011-05-11 20:01:16

+0

這是真的。但是,有些人可能只是因爲他/她想要繞過客戶端驗證而關閉javascript。在這種情況下,控制器端應該是安全的。 – 2011-05-12 07:20:57

回答

1

客戶端驗證功能將被關閉。這就是爲什麼你絕不能僅僅依靠客戶端驗證。它不會影響在服務器上使用註釋的模型聯編程序。下面是從博客文章中的有關內容...

由於動作方法接受一個 「人」對象作爲參數, ASP.NET MVC會創建一個Person對象 自動映射 傳入形成輸入值。由於 這個過程的一部分,它也將 檢查是否 DataAnnotation驗證屬性 Person對象是有效的。如果 一切是有效的,那麼我們的 代碼中的 ModelState.IsValid檢查將返回true - 在這種情況下 我們將(最終)的人 保存到數據庫中,然後重定向回 到戶頁。