簡體   English   中英

如何驗證 DTO 中的枚舉,使其包含該枚舉類型的有效值?

[英]How to validate enum in DTO so it contains valid values for that enum type?

我有一個 DTO:

public class MyDto
{
    [Required]
    [Range(1, int.MaxValue)]
    public MyEnum MyEnum { get; set; }
}
public enum MyEnum
{
    E1 = 1,
    E2 = 2 << 0,
    E3 = 2 << 1,
    E4 = 2 << 2,
}

當帶有空正文{}的請求被發送到帶有簽名的方法時: public async Task<IActionResult> Method([FromBody] MyEnum value)

MyEnum將默認為 0,這不是該枚舉的有效值。 這就是我引入[Range(1, int.MaxValue)]注釋的原因。 但是如果請求看起來像這樣:

{"MyEnum": 3} [FromBody]只會使用無效值3構造MyDto

問題:當請求包含對MyEnum無效的值時,如何使[FromBody]無法通過 model 驗證,唯一有效的值是E1,E2,E3,E4,1,2,4,8,16

好的,我找到了:

    [Required]
    [EnumDataType(typeof(MyEnum))]
    public MyEnum MyEnum { get; set; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM