mar*_*inv 8 .net c# asp.net-core asp.net-core-webapi
我从小提琴手发送POST:
POST http://localhost:55924/api/Product HTTP/1.1
User-Agent: Fiddler
Host: localhost:55924
Content-Type: application/json; charset=utf-8
Content-Length: 84
{"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"}
Run Code Online (Sandbox Code Playgroud)
但Post方法总是为空.
// POST api/Product
[HttpPost]
public IActionResult PostProduct([FromBody]Product product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_repo.Add(product);
return CreatedAtRoute("GetToode",product);
}
Run Code Online (Sandbox Code Playgroud)
当我使用[FormBody]时,产品始终为null,当不使用时,产品会被重视,但所有字段都为null.产品类很简单.
public class Product
{
public int ProductID { get; set; }
public string EAN { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int? CategoryID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在建议我尝试添加NullValueHandling到ConfigureServices 后,但没有用.
services.AddMvc()
.AddJsonOptions(jsonOptions =>
{
jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
我只需要更正您的POST请求中的双引号就可以了。尝试这个:
{"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"}
Run Code Online (Sandbox Code Playgroud)
请参见下面的屏幕截图。
小智 6
我遇到了类似的问题,但我没有检查ModelState
OP的有效性。发生这种情况时,在调试模式下检查它可能会指出模型有什么问题:
在此示例中,我使用无效字符串'A'
作为Guid
属性的测试值,因此模型始终为空。
归档时间: |
|
查看次数: |
11017 次 |
最近记录: |