小编Mat*_*zer的帖子

模型枚举字段的 ASP.NET 自定义 ErrorMessage

我正在开发一个基于 EntityFrameworkCore 并针对 ASP.NET Core 2.1 的网站。我想为模型中的枚举字段指定错误消息,如下所示:

\n\n
[Required(ErrorMessage = "Select an item from the list.")]\npublic MyEnum MyEnum { get; set; }\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,仍然生成库存消息:The value \'0\' is invalid。问题似乎是在评估我的任何代码之前验证枚举类型。这里介绍的两种方法(https://www.codeproject.com/Articles/1204077/ASP-NET-Core-MVC-Model-Validation),要么创建一个继承自 ValidationAttribute 的类,要么让模型继承自 IValidatableObject受此之苦。

\n\n

我找到了一个解决方法:将字段声明为 int,然后使用自定义验证属性:

\n\n
[EnumCheck(typeof(MyEnum), ErrorMessage = "Select an item form the list.")]\npublic int MyEnum { get; set; }\n
Run Code Online (Sandbox Code Playgroud)\n\n

...然后从 ValidationAttribute 继承子类:

\n\n
sealed public class EnumCheck : ValidationAttribute\n{\n    readonly Type t_;\n\n    public EnumCheck(Type t)\n    {\n        t_ = t;\n    }\n\n    public override bool IsValid(object …
Run Code Online (Sandbox Code Playgroud)

c# enums validationattribute ivalidatableobject asp.net-core-2.1

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