【问题标题】:Overriding ModelBindingMessageProvider error messages覆盖 ModelBindingMessageProvider 错误消息
【发布时间】:2019-07-18 11:02:15
【问题描述】:

我有一个 .net core 2.2 webapi。有一个接受模型的POST 操作。该模型具有Guid 作为属性之一。当我发布此模型但提供一个字符串而不是 Guid 时,我得到一个 ModelState.IsValid = false,这是正确的。默认模型绑定错误消息是"Error converting value \"string\" to type 'System.Guid'. Path 'memberId', line 3, position 22." 这不是我想要返回的友好消息,而且,此消息需要本地化为用户的语言。我读过的所有资源都说我需要在AddMvC() 选项中设置ModelBindingMessageProvider 的访问器。即

services.AddMvc(options => options.ModelBindingMessageProvider.SetAttemptedValueIsInvalidAccessor((x, y) => "blah blac");

我已经在那里设置了所有的访问器,但它仍然没有更改默认消息。有谁知道如何设置这些默认值?

【问题讨论】:

    标签: asp.net-core .net-core asp.net-core-mvc asp.net-core-webapi


    【解决方案1】:

    问题是InputFormatter 正在抛出异常,并且异常消息用于模型状态条目。您可以在 services.AddMvc().AddJsonOptions(options => options.AllowInputFormatterExceptionMessages = false;) 中禁用此功能。这将为错误消息添加一个空字符串,您可以检测到该字符串,然后只向用户显示一条通用消息。我还没有找到更好的方法来做到这一点,但这个方法现在就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-13
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2011-04-28
      • 2011-02-25
      • 2014-04-07
      相关资源
      最近更新 更多