【发布时间】:2020-06-09 19:14:00
【问题描述】:
我在使用ModelState 验证时遇到了这个问题,因为我使用的模型的属性装饰有[Required] 属性,但它永远不会无效,即使在null 上也是如此。
这是控制器:
[HttpPost("x/{sampleString}")]
[ProducesResponseType(StatusCodes.Status303SeeOther)]
public IActionResult Post(string sampleString, SponsorContractorFilterModel model)
{
if (!ModelState.IsValid)
return StatusCode(BadRequest("Model sent is not valid").StatusCode.GetValueOrDefault());
//do stuff, add location on header and send back the 303.
return StatusCode(StatusCodes.Status303SeeOther);
}
而且模型非常简单:
public class SponsorContractorFilterModel
{
/// <summary>
/// Initializes a new instance of the <see cref="SponsorContractorFilterModel"/> class.
/// </summary>
public SponsorContractorFilterModel()
{
}
/// <summary>
/// Sponsor number.
/// </summary>
[Required]
public int? AnImportantNumber { get; set; }
public List<int> SomeIds { get; set; }
//few more attributes not been decorated on purpose.
}
问题是,当我用邮递员发送一个没有“AnImportantNumber”或明确null 的模型对象时,在这两种情况下都表明这是无效的。当我调试它时,我可以看到它实际上映射为null。
【问题讨论】:
标签: c# validation .net-core modelstate