【发布时间】: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