传入错误的枚举值时如何在ASP.NET Core中获取自定义ModelState错误消息?

问题描述 投票:2回答:2

我将模型传递给具有名为eventType的属性的API动作,该属性是可为空的自定义枚举。

如果我为eventType传递一个随机值,例如'h',它将无法序列化这是正确的。

但是,我从ModelState收到的错误不是我希望公共调用者看到的错误。它包括行号和位置(请参见下文)。

我尝试了许多选项,包括自定义数据注释,均未成功。

有人知道我如何定义更好的自定义消息吗?

“将值\” h \“转换为类型时出错'System.Nullable`1 [Custom.EventTypes]'。路径“ eventType”,第1行位置80。“

asp.net-core data-annotations
2个回答
0
投票

多数情况下,第一个错误通常是最重要的错误,或更确切地描述情况的错误。您可以使用这种方式进行操作,以从第一个键中获取第一条错误消息,或者如果希望获取所有错误消息,则将其更改为所需的任何内容。

public ActionResult GetMyMoney(MyModel myModel)
{
  string nss = ModelState.First().Key;
  ModelError[] ern = ModelState[nss].Errors.ToArray();
  string ndd = ern.First().ErrorMessage;
}

0
投票
public class CustomFilter: IAsyncActionFilter
{
    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        if (!context.ModelState.IsValid)
        {
            // You can pass custom object to BadRequestObjectResult method
            context.Result = new BadRequestObjectResult(customObject);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.