我已经用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. asp.net mvc period in POST参数
- 7. Sitecore MVC Form Post
- 8. 为什么不能解决此参考?
- 9. 为什么ASP.NET MVC 3不能正确验证我的浮动?
- 10. Asp.net MVC2 - Form Post Binding
- 11. 为什么Asp.net MVC而不是Asp.net MVP
- 12. 为什么PHP会自动自动解码HTML实体?
- 13. Asp.Net Mvc Form不发表?
- 14. 为什么POST的请求不解析?
- 15. ASP.NET MVC POST参数中的URL
- 16. ASP.NET MVC与JQuery $ post和参数
- 17. 为什么POST获取两个参数?
- 18. 解析作为POST参数
- 19. 为什么动作参数不能与动作同名?
- 20. 为什么Server.HtmlDecode不解码数据?
- 21. 为什么不能从AJAX POST到sqlite?
- 22. 如何在ASP.NET MVC中将参数数组作为GET/POST?
- 23. 为什么HTTP动词POST称为POST?
- 24. 为什么angularjs url编码我的POST参数?
- 25. Drupal:为什么form API不能在_page函数外工作?
- 26. 使用ASP.NET MVC动作参数参数
- 27. ASP.NET MVC:为什么`ToMvcHtmlString`不公开?
- 28. PHP不解码POST
- 29. MVC Carousel不能自动滑动Bootstrap MVC
- 30. 为什么这些cookie代码在asp.net mvc中不起作用?
它会检查模型绑定。 – 2011-12-17 05:26:06