【问题标题】:Complex object is coming as NULL for HttpPut in ASP.Net Core 2.2ASP.Net Core 2.2 中 HttpPut 的复杂对象为 NULL
【发布时间】:2019-03-28 23:45:56
【问题描述】:

我正在使用 Asp.Net Core 2.2 构建一个 webapi。我的一个控制器有一个 Put 方法来更新实体。问题是,我从邮递员休息客户端传递的复杂对象始终为空。

[HttpPut]
[Route("{searchPatternId:long}")]
public async Task<IActionResult> Put(long searchPatternId, [FromBody]SearchPattern searchPattern)
{
        try
        {
            if (searchPattern == null) return BadRequest();

            return Ok(await _searchPatternService.PutAsync(searchPattern));
        }
        catch (Exception e)
        {
            await _errorLogService.Log(e);
            return StatusCode(500);
        }
}

SearchPattern 类:

[Table("search_pattern", Schema = "abc")]
public class SearchPattern
{
    [Key]
    public long SearchPatternId { get; set; }
    public string Pattern { get; set; }
    public long PatternHash { get; set; }
    public int? Age { get; set; }
    public string Location { get; set; }
    public long TotalRecordsFound { get; set; }
    public int TotalPages { get; set; }
    public int LastSearchedPage { get; set; }
    public string MachineName { get; set; }
    public string CreatedBy { get; set; }
    public DateTime CreatedDate { get; set; }
    public string UpdatedBy { get; set; }
    public DateTime? UpdatedDate { get; set; }
    public string Url { get; set; }
}

邮递员请求:

这是我迄今为止尝试过的:

[HttpPut]
[Route("{searchPatternId:long}")]
public async Task<IActionResult> Put([FromRoute]long searchPatternId, [FromBody]SearchPattern searchPattern)

[HttpPut("{searchPatternId:long}")]    
public async Task<IActionResult> Put([FromRoute]long searchPatternId, [FromBody]SearchPattern searchPattern)

[HttpPut]
public async Task<IActionResult> Put([FromBody]SearchPattern searchPattern)

调试输出:

【问题讨论】:

  • 不!没有这样的! [HttpPut] [Route("{searchPatternId:long}")][HttpPut("{searchPatternId:long}")] 是同时的。
  • 您可以将您的复杂对象分享为文本,而不是图片吗?我想测试一下,否则你的代码对我有用。
  • @Amir 假设 JSON 中没有缺少成员,该类是公共的并且它的所有成员都是公共属性,这工作正常
  • 你在那个控制器上还有其他 put 方法吗?
  • 我已经使用您的代码进行了测试,并且可以正常工作。可能还有其他问题。 imgur.com/1CuPzos

标签: c# asp.net-core


【解决方案1】:

searchPattern 参数设置为null,因为模型绑定程序至少有一个模型属性的无效值。在您的情况下,很明显 updateDate 映射到 DateTime 类型,但指定值的格式无效

2019-03-27T01:20:00 PM

PM这里部分无效,删除即可

2019-03-27T01:20:00

还要确保所有其他字段都有有效值来解决您的问题。

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2021-09-13
    相关资源
    最近更新 更多