这可能是非常基本的东西,但是我很难弄清楚我要去哪里。
我正在尝试从POST正文获取字符串,但是“jsonString”仅显示为null。我也想避免使用模型,但这也许是不可能的。我用PostMan编写的代码是以下代码:
[Route("Edit/Test")]
[HttpPost]
public void Test(int id, [FromBody] string jsonString)
{
...
}
也许这是我对 postman 做的不正确的事情,但是我一直在尝试在正文的值部分使用x = www-form-urlencoded部分,其中使用“= test”(如关于该主题的其他问题所示) key 为jsonString,什么也没有。我也尝试过使用原始文本和原始文本/纯文本。我得到了ID,所以我知道网址是正确的。任何帮助,将不胜感激。
目前,PostMan的设置如下:
POST http://localhost:8000/Edit/Test?id=111
key = id value = 111
Body - x-www-form-urlencoded
key = jsonString value = "=test"
最佳答案
通过使用[FromBody]
声明jsonString参数,您可以告诉ASP.NET Core使用输入格式器将提供的JSON(或XML)绑定(bind)到模型。因此,如果您提供一个简单的模型类,那么您的测试应该可以工作
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"
}
当然,您可以通过访问 Controller 中的
HttpContext.Request
来跳过模型绑定(bind)并直接检索提供的数据。 HttpContext.Request.Body
属性为您提供内容流,或者您可以通过HttpContext.Request.Forms
访问表单数据。由于类型安全,我个人更喜欢模型绑定(bind)。
关于c# - FromBody字符串参数为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40853188/