[Required]当 JSON 请求没有为枚举属性提供正确的值时,是否可以返回属性错误消息?
例如,我有一个包含AddressType枚举类型属性的 POST 消息模型:
public class AddressPostViewModel
{
[JsonProperty("addressType")]
[Required(ErrorMessage = "Address type is required.")]
public AddressType AddressType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该AddressType枚举接受两个值:
[JsonConverter(typeof(StringEnumConverter))]
public enum AddressType
{
[EnumMember(Value = "Dropship")]
Dropship,
[EnumMember(Value = "Shipping")]
Shipping
}
Run Code Online (Sandbox Code Playgroud)
我注意到(或者实际上我的 QA 团队注意到)如果请求消息 JSON 包含空字符串或 null AddressType,则错误消息不是预期的Address type is required.消息。相反,错误消息是一个有点不友好的解析错误。
例如,如果请求 JSON 如下所示:
{ "addressType": "" }
Run Code Online (Sandbox Code Playgroud)
然后验证框架自动生成的错误如下所示:
{
"message": "Validation Failed",
"errors": [
{
"property": "addressType",
"message": "Error converting value \"\" …Run Code Online (Sandbox Code Playgroud) 有一个枚举类型:
public enum Cat {
[EnumMember(Value = "white_cat")]
WhiteCat,
[EnumMember(Value = "black_cat")]
BlackCat
}
Run Code Online (Sandbox Code Playgroud)
但是使用如下asp.net core 2.2模型绑定,会绑定失败:
public class A {
public Cat TheCat { get; set; }
}
public class XXXController : ControllerBase {
public ActionResult XXX([FromForm] Cat cat) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)