鉴于我的Employee模型具有可为空的GenderID
public class Employee
{
public int? GenderID { get; set; }
}
在GenderID上自定义Fluent验证规则
RuleFor(x=> x.GenderID).NotNull().WithMessage("Please provide a valid Gender");
当我POST
员工到NULL
GenderID
然后服务按预期返回验证摘要。
[HttpPost("Employee/Create")]
public IActionResult Create([FromBody]Employee employee)
{
try
{
if (!ModelState.IsValid)
{
// return validation summary (code omitted for brevity)
}
var result = _respository.CreateEmployee(employee);
return Ok();
}
}
如果我将Employee模型更改为具有不可为空的GenderID
public class Employee
{
public int GenderID { get; set; }
}
然后服务返回400 Bad Request响应而不处理自定义验证。需要验证摘要才能绑定到UI。
将GenderID设置为可空的唯一原因是允许从自定义验证器创建验证摘要。
如何在不需要将所有模型属性设置为可空的情况下应用自定义验证?
答案 0 :(得分:0)
我认为您收到的错误请求是因为将null GenderId转换为not nullable int时出错。与流畅的验证无关。 我的意见是,如果您希望在请求中收到null GenderId,您应该将属性GenderId保持为可空,并让fluent管理其规则中的错误。如果您认为请求将始终包含非null GenderId,则使GenderId不可为空。如果GenderId(始终不为null)为null,则应抛出运行时异常。