我已經用System.Net.WebClient和一個ASP.net MVC 3網站做了一些基本的測試,我發現綁定到一個動作的參數時,MVC會自動解碼任何已經被UrlEncoded查詢的字符串參數如果你使用GET。但它不會自動解碼POST參數。是否有一個原因?似乎是不必要的不便。爲什麼ASP.net MVC不能自動解碼POST(aka Form)參數?
2
A
回答
11
ASP.NET MVC默認模型聯編程序使用Request.Form
提供程序來讀取POST值。這個提供者也自動解碼url編碼參數。
例如,如果您發送以下POST有效載荷:在相應的控制器動作
foo=%26&bar=%3D
你會得到正確的值:
[HttpPost]
public ActionResult Test(string foo, string bar)
{
// foo equals &
// bar equals =
}
所以你可能不正確的URL編碼請求。
+0
謝謝Darin。你是對的。 事實證明,我是雙重編碼我的測試參數,「doesn '噸」,因爲我沒有意識到WebClient.UploadValues爲你編碼params。如果我在調用UploadValues之前沒有進行URL編碼,即參數只編碼一次,則由於我的測試值,我得到了一個「潛在危險的請求」錯誤。 我認爲URL編碼會處理任何這樣的錯誤,所以真的把一個扳手投入我的測試/理解。再次感謝。 – Sean 2011-12-19 18:15:52
0
如果您使用jQuery.Post並使用data參數作爲POST數據發送數據,如下面的代碼片段所示,那麼jquery會自動爲您編碼。
var postdata = {
url: someUrl, //do not encodeURIComponent, it's done by jquery.post. test with some edge url if in doubt
};
$.post(serverUrl, postdata)
.done(function (data) {
};
如果你還編碼自己,那麼你會得到雙重編碼的數據。無論是get還是post,Asp.net控制器參數總是被解碼一次。
相關問題
- 1. ASP.NET MVC Form Post
- 2. ASP.NET MVC Form post
- 3. ASP.NET MVC自動解碼來自AJAX的JSON編碼參數
- 4. http post不能調用ASP.NET MVC動作
- 5. 爲什麼PHP自動html解碼我的POST?
- 6. 爲什麼JBoss Post Form在URL中發送參數?
- 7. asp.net mvc period in POST參數
- 8. MVC3 - Form + POST =空參數
- 9. Sitecore MVC Form Post
- 10. 爲什麼POST參數不取值?
- 11. 爲什麼ASP.NET MVC 3不能正確驗證我的浮動?
- 12. 爲什麼不能解決此參考?
- 13. ASP.NET MVC - 自動deserialise JSON取POST
- 14. 爲什麼Spring MVC會自動重試POST請求?
- 15. 自動映射方法參數設置爲$ _ POST數據(MVC)
- 16. 爲什麼Express.js不能正確讀取POST參數?
- 17. 爲什麼Asp.net MVC而不是Asp.net MVP
- 18. 爲什麼不能成功解碼UIImage?
- 19. Asp.net MVC2 - Form Post Binding
- 20. 爲什麼Haskell無法自動解析參數個數?
- 21. Asp.Net Mvc Form不發表?
- 22. ASP.NET MVC解碼Html.BeginForm URL
- 23. 爲什麼郵政編碼值不能放入Boyce Codd Normal Form?
- 24. 爲什麼PHP會自動自動解碼HTML實體?
- 25. ASP.NET MVC 5 Form Post Reloads Page沒有處理動作
- 26. ASP.NET MVC POST參數中的URL
- 27. ASP.NET MVC與JQuery $ post和參數
- 28. 爲什麼POST的請求不解析?
- 29. MVC Form post Html.BeginForm ASPX view
- 30. 爲什麼Asp.net MVC不能區分兩個動作,當他們有不同的參數?
它會檢查模型綁定。 – 2011-12-17 05:26:06