我用System.Net.WebClient和一个ASP.net MVC3网站做了一些基本的测试,我发现当绑定到一个动作的参数时,如果你使用GET,MVC将自动解码任何UrlEncoded的查询字符串参数。但它不会自动解码POST参数。这是有原因的吗?看起来是不必要的不便。
发布于 2011-12-18 00:47:55
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编码。
发布于 2016-07-08 23:51:07
如果您正在使用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控制器参数总是解码一次。
https://stackoverflow.com/questions/8541943
复制相似问题