我只是调用一个API并将一个对象作为参数传递,并且一切正常。但是后来我想先验证模型,然后再在我一直希望填写的字段上方写下[Required]。 模型
public class Consent
{
public Consent()
{
}
public int Id { get; set; }
[Required]
public int FacilityId { get; set; }
public string Heading { get; set; }
public string Description { get; set; }
}
并像这样在控制器中验证模型状态
public ActionResult<int> AddConsent(Consent consent)
{
if(!ModelState.IsValid){
throw new CustomException("000-0000-000", "Validation failed");
}
//Further Code
}
通过这种方式,我期望在我调用api时不发送facilityId时模型状态为false JSON
{
"heading": "HeadingFromPostman5",
"description": "DiscriptiomFromPostman5"
}
但它仍然是正确的。我知道.Net核心会在null时将0分配给int值,但是我如何才能对其进行验证?对此有何解决方法?
答案 0 :(得分:1)
Required属性适用于可为空的引用对象。对于基元,创建实例时,会将默认值(在本例中为int)分配给FacilityId,因此Required无效。如果将FacilityId设置为可为null的int,则Required属性将正常工作。
[Required]
public int? FacilityId { get; set; }
答案 1 :(得分:0)
只需替换此行:
[Required]
public int FacilityId { get; set; }
与此:
[Required]
public int? FacilityId { get; set; }