gpt4 book ai didi

c# - 从内容类型为 application/json 的请求中检索值

转载 作者:太空狗 更新时间:2023-10-29 21:51:23 24 4
gpt4 key购买 nike

我有以下脚本将数据发送到 MVC 中的 Controller :

$.ajax({
url: '/products/create',
type: 'post',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
'name':'widget',
'foo':'bar'
})
});

我的 Controller 看起来像这样:

[HttpPost]
public ActionResult Create(Product product)
{
return Json(new {success = true});
}

public class Product
{
public string name { get; set; }
}

有没有办法在我的 Controller 操作中获取“foo”变量而无需

  • 修改模型
  • 修改 Action 的签名

如果是常规表单提交,我可以访问 Request.Form["foo"],但此值为 null,因为它是通过 application/json 提交的。

我希望能够从 Action Filter 访问此值,这就是我不想修改签名/模型的原因。

最佳答案

我今天想做的几乎完全一样,但发现这个问题没有答案。我也用与 Mark 类似的解决方案解决了它。

这对我来说在 asp.net MVC 4 中非常有效。也许可以帮助其他人阅读这个问题,即使它是一个旧问题。

        [HttpPost]
public ActionResult Create()
{
string jsonPostData;
using (var stream = Request.InputStream)
{
stream.Position = 0;
using (var reader = new System.IO.StreamReader(stream))
{
jsonPostData = reader.ReadToEnd();
}
}
var foo = Newtonsoft.Json.JsonConvert.DeserializeObject<IDictionary<string, object>>(jsonPostData)["foo"];

return Json(new { success = true });
}

重要的部分是重置流的位置,因为它已经被某些 MVC 内部代码或其他任何内容读取。

关于c# - 从内容类型为 application/json 的请求中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com