相关疑难解决方法(0)

枚举作为 ASP.NET Core WebAPI 中的必填字段

[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)

c# enums asp.net-core-webapi

8
推荐指数
2
解决办法
1万
查看次数

是否有任何替代 Attribute 用于 asp.net core 枚举模型绑定而不是 EnumMemberAttribute?

有一个枚举类型:

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)

c# asp.net-core asp.net-core-2.2

1
推荐指数
1
解决办法
855
查看次数