一尘不染

FromBody字符串参数为空

c#

这可能是非常基本的东西,但是我很难弄清楚我要去哪里。

我试图从POST正文中获取一个字符串,但“
jsonString”仅显示为null。我也想避免使用模型,但这也许是不可能的。我用PostMan编写的代码片段是:

[Route("Edit/Test")]
[HttpPost]
public void Test(int id, [FromBody] string jsonString)
{
    ...
}

也许这是我对邮递员做的不正确的事情,但是我一直在尝试在正文的值部分使用x = www-form-urlencoded部分,使用“ =
test”(如关于该主题的其他问题所示)密钥为jsonString,什么也没有。我也尝试使用原始文本和原始文本/纯文本。我获得了ID,因此我知道网址是正确的。任何帮助,将不胜感激。

目前,PostMan的设置如下:

POST http://localhost:8000/Edit/Test?id=111
key = id  value = 111
Body - x-www-form-urlencoded
key = jsonString  value = "=test"

阅读 1788

收藏
2020-05-19

共1个答案

一尘不染

通过声明jsonString参数,[FromBody]可以告诉ASP.NET
Core使用输入格式器将提供的JSON(或XML)绑定到模型。因此,如果您提供一个简单的模型类,那么您的测试应该可以工作

public class MyModel
{
    public string Key {get; set;}
}

[Route("Edit/Test")]
[HttpPost]
public void Test(int id, [FromBody] MyModel model)
{
    ... model.Key....
}

和一个发送的JSON

{
    key: "value"
}

当然,您可以跳过模型绑定,而直接通过访问HttpContext.Request控制器来检索提供的数据。该HttpContext.Request.Body属性为您提供内容流,或者您可以通过访问表格数据HttpContext.Request.Forms

由于类型安全,我个人更喜欢模型绑定。

2020-05-19