在ASP.Net Core 2.2中,复杂对象以NULL的形式出现在HttpPut中

Nis*_*hah 0 c# asp.net-core

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

[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);
        }
}
Run Code Online (Sandbox Code Playgroud)

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; }
}
Run Code Online (Sandbox Code Playgroud)

邮递员要求:

在此处输入图片说明

到目前为止,这是我尝试过的:

[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)
Run Code Online (Sandbox Code Playgroud)

调试输出:

在此处输入图片说明

Ale*_*der 5

searchPattern参数设置为,null因为模型活页夹为模型属性获得了至少一个无效值。在您的情况下,很明显updateDate映射到DateTimetype,但是指定的值格式无效

2019-03-27T01:20:00 PM
Run Code Online (Sandbox Code Playgroud)

PM 部分无效,只需将其删除

2019-03-27T01:20:00
Run Code Online (Sandbox Code Playgroud)

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