为什么ASP.net MVC不能自动解码POST(又名Form)参数?

Sea*_*ean 3 asp.net-mvc asp.net-mvc-3

我已经使用System.Net.WebClient和一个ASP.net MVC 3网站完成了一些基本测试,我发现当绑定到一个动作的参数时,MVC将自动解码任何已经UrlEncoded的查询字符串参数如果你使用GET.但它不会自动解码POST参数.是否有一个原因?似乎是一种不必要的不​​便.

Dar*_*rov 13

ASP.NET MVC默认模型绑定器使用Request.Form提供程序读取POST值.此提供程序还会自动解码url编码的参数.

例如,如果您发送以下POST有效负载:

foo=%26&bar=%3D
Run Code Online (Sandbox Code Playgroud)

在相应的控制器操作中,您将获得正确的值:

[HttpPost]
public ActionResult Test(string foo, string bar)
{
    // foo equals &
    // bar equals =
}
Run Code Online (Sandbox Code Playgroud)

所以你可能没有正确地对请求进行url编码.