Asp.net Core Post 参数始终为空 [关闭]
Posted
技术标签:
【中文标题】Asp.net Core Post 参数始终为空 [关闭]【英文标题】:Asp.net Core Post parameter is always null [closed] 【发布时间】:2017-02-06 11:19:48 【问题描述】:我正在从提琴手发送 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"
但是 Post 方法总是为空。
// POST api/Product
[HttpPost]
public IActionResult PostProduct([FromBody]Product product)
if (!ModelState.IsValid)
return BadRequest(ModelState);
_repo.Add(product);
return CreatedAtRoute("GetToode",product);
当我使用 [FormBody] 时,产品始终为空,当不使用时,产品被重视,但所有字段均为空。产品类很简单。
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;
我尝试按照post 中的建议将 NullValueHandling 添加到 ConfigureServices,但没有用。
services.AddMvc()
.AddJsonOptions(jsonOptions =>
jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
);
【问题讨论】:
尝试发送所有属性。包括ProductID
和CategoryID
。
这就像你的映射字段不匹配,名称应该与产品类中的相同,也可以尝试删除[FromBody]
【参考方案1】:
我遇到了类似的问题,但我没有检查 ModelState
作为 OP 的有效性。发生这种情况时,在调试模式下检查它可能会指出模型有什么问题:
在此示例中,我使用无效字符串 'A'
作为 Guid
属性的测试值,因此模型始终为空。
【讨论】:
感谢您的精彩回答!在偶然发现这个之前,我在黑暗中拍摄【参考方案2】:遇到了同样的问题。事实证明,我没有用于传入实例类的公共无参数构造函数。在这种情况下,Product
仅具有受保护的构造函数,并且无论如何参数始终为 null。希望它可以帮助某人。
【讨论】:
【参考方案3】:我只需要更正您的 POST 请求中的双引号就可以了。试试这个:
"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"
请看下面的截图。
【讨论】:
老实说,我现在觉得自己太笨了,我自己都没注意到。 不清楚这个答案指的是什么引用,因为这个问题已经被编辑了几次。仅供参考,OP 在原始请求正文中混合使用了″ ”
和 "
字符。以上是关于Asp.net Core Post 参数始终为空 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数
ASP.NET WebApi HttpPost 参数始终为空
ASP.Net Core 3.1 - Web API 中的 Post 参数始终为 NULL