2

我正在尝试处理 HTTP PUT 请求的正文,但似乎 MVC 引擎(或者可能是支持它的 ASP.NET 堆栈)不会自动解析并使用正文数据填充请求的 Form 集合。

在进行 POST 时,这确实可以按预期工作。

请注意,请求的 InputStream 属性确实包含预期的数据,显然我可以使用它构建我自己的键/值集合,但是我希望 PUT 的工作方式与 POST 相同。

我在这里错过了什么吗?

示例操作方法:

[AcceptVerbs(HttpVerbs.Put)]
public ActionResult Purchase(int id, FormCollection data)
{
  // Do stuff with data, except the collection is empty (as is Request.Form)
}
4

2 回答 2

2

文档中引用:

Form 集合使用 POST 方法检索发布到 HTTP 请求正文的表单元素的值。

因此,我建议您编写一个自定义模型类,而不是使用Request.Form它来保存请求数据并将其作为操作参数传递。默认模型绑定器将自动从请求流中传递的键/值填充属性:

[AcceptVerbs(HttpVerbs.Put)]
public ActionResult Purchase(MyCustomModel model)
{
    // Do stuff with the model
}
于 2010-06-30T06:17:20.430 回答
0

Asp.net 不支持 PUT 开箱即用的自定义请求。如果您使用的不是内置功能来生成 PUT url,请尝试在标头、表单或查询字符串中添加X-HTTP-Method-Override值。PUT

于 2011-05-03T11:32:14.857 回答