在Asp.NET Core集成测试中,如果POST方法获取到空值,可能是由于以下几个原因:
AddJsonBody
方法将数据作为JSON对象添加到请求体中,或者使用AddFormUrlEncoded
方法将数据作为表单键值对添加到请求体中。var request = new HttpRequestMessage(HttpMethod.Post, "/api/controller/action");
request.Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
[FromBody]
用于绑定请求体中的JSON数据,或[FromForm]
用于绑定请求体中的表单数据。[HttpPost]
public IActionResult Action([FromBody]Model model)
{
// ...
}
ModelState.IsValid
属性来检查模型绑定是否成功。public class Model
{
public string Property1 { get; set; }
public int Property2 { get; set; }
}
[HttpPost]
public IActionResult Action([FromBody]Model model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
// ...
}
[HttpPost]
public IActionResult Action([FromBody]Model model)
{
if (model.Property2.GetType() != typeof(int))
{
model.Property2 = int.Parse(model.Property2.ToString());
}
// ...
}
通过检查以上几个方面,您应该能够解决Asp.NET Core集成测试中POST方法获取到空值的问题。