asp.net-mvc - 为什么 ASP.net MVC 不自动解码 POST(又名表单)参数?

标签 asp.net-mvc asp.net-mvc-3

我已经使用 System.Net.WebClient 和 ASP.net MVC 3 网站进行了一些基本测试,我发现当绑定(bind)到操作的参数时,MVC 会自动解码已被配置的任何查询字符串参数。如果使用 GET,则进行 UrlEncoded。但它不会自动解码 POST 参数。是否有一个原因?似乎带来了不必要的不​​便。

最佳答案

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

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

foo=%26&bar=%3D

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

[HttpPost]
public ActionResult Test(string foo, string bar)
{
    // foo equals &
    // bar equals =
}

所以您可能没有正确对请求进行 url 编码。

关于asp.net-mvc - 为什么 ASP.net MVC 不自动解码 POST(又名表单)参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8541943/

相关文章:

asp.net - ASP.NET MVC 路由的无限 URL 参数

c# - MVC 身份,启用用户名,但登录中断

c# - 如何在 C# 中使用复杂类型的 REST 服务?

asp.net - 创建指向 Web 表单页面的链接并向其发送一些变量

asp.net-mvc-3 - 使用.SetValidator()时,FluentValidation.Net不会产生客户端非侵入式验证

c# - 即使提供了显式值,HtmlHelper.TextBox 也会使用模型值

database - 不同 Entity Framework 模型的相同连接字符串?

html - 如何使用 .NET 数据注释属性附加自定义 HTML 属性或 CSS 类?

jquery - JQuery Post 调用中的相对 URL

c# - Systems.Timers.Timer 在调试中工作,但不在发布中