回答
通常當運行這樣的動作時,您會傾向於使用單獨的參數而不是完整的模型;看起來正在發生的事情是模型綁定器正在踢你併爲你驗證你的模型。
您可以通過調試ModelState.IsValid
爲false的操作進行驗證,並且它有一些關鍵字與模型上的字段無關嗎?如果是這樣,則可以在返回視圖之前嘗試執行ModelState.Clear()
,以防止在此情況下顯示驗證錯誤。
我有同樣的問題,我在創建操作的模型中使用了CustomValidation屬性,但是另一個操作需要將更改保存到數據庫驗證導致的錯誤。所以我通過移除CustomValidation屬性和驗證模型的創建操作方法裏面只有
快速解答固定它:嘗試使用[ValidateInput(假)]在您的「GET」操作方法
更新: 使用asp.net 4,爲了讓框架確認ValidateInput屬性,您還需要在web.config中配置驗證模式。
設置以下爲<system.web>
元素的子:
<httpRuntime requestValidationMode="2.0"/>
爲什麼在你的「GET」的操作方法有一個視圖模型?
利用默認的模型聯編程序。
例如,我們有Child Actions返回綁定到複雜ViewModels設置的部分視圖,我們不希望爲每個Child Action顯式實例化和重建ViewModel。
例如,訂單頁面的編輯頁面需要一個EditOrderViewModel,它繼承BaseUserViewModel,後者又包含用戶特定的顯示數據(用戶名,購物車項目數量等)。
所以操作方法返回編輯觀點是這樣的:
[ValidateInput(false)]
[HttpGet]
public ViewResult Edit(EditOrderViewModel editOrderVm)
{
...
return View('Edit', editOrderVm);
}
現在只要申請到這個孩子的行動方法包括BaseUserViewModel的性能在某種程度上(例如,通過餅乾,形式和查詢字符串屬性),那麼默認模型聯編程序將實例化並用所有基本視圖模型數據填充EditOrderViewModel。
但是,當我們第一次加載這個頁面時,我們不希望驗證信息以用戶沒有機會編輯的形式顯示出來......
因此,我們關閉'GET'請求的模型驗證>確保您驗證'POST'請求!
- 1. Spring 3 MVC請求驗證
- 2. GET請求的跳過令牌驗證
- 3. MVC 4路由,GET/POST請求處理
- 4. jQuery的驗證旁路
- 5. 驗證請求是否爲GET/POST
- 6. 無法驗證HTTP GET請求Node.js + Expressjs
- 7. restify.js + passport.js未驗證GET請求
- 8. 驗證WP REST API GET請求
- 9. GET請求與身份驗證
- 10. 驗證BundleConfig路由/ URL的請求
- 11. Facebook圖使用python請求模塊 - 證書驗證失敗的GET請求
- 12. MVC Ajax.BeginForm - 成功Get請求
- 13. 在MVC中驗證REST請求2
- 14. GET請求路由參數
- 15. Http GET驗證ASP.NET MVC 5
- 16. CakePHP的旁路驗證組件
- 17. 驗證請求中的驗證掛鉤
- 18. Asp.mvc請求驗證
- 19. Laravel請求驗證
- 20. 驗證請求sql
- 21. 驗證空請求
- 22. 旁路驗證表單域django
- 23. JSF Primefaces - 旁路驗證在p:ajax
- 24. Struts2驗證旁路/塊,表分頁
- 25. Rails表單驗證條件旁路
- 26. Spring MVC的綁定使用GET請求
- 27. .NET MVC 4中的簡單GET請求
- 28. Java Jersey使用驗證標頭的HTTPS GET請求
- 29. POST/GET請求在Spring Boot中的參數驗證
- 30. 嵌入式IFRAME - 驗證GET請求的源/產地
在MVC 5中添加'ValidateInput(false)'不起作用。由於視圖模型參數,仍然執行驗證。 – 2015-04-08 10:55:47