我有一个.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."
。这不是我要返回的友好消息,并且该消息还需要本地化为用户的语言。我读过的所有资源都说我需要在ModelBindingMessageProvider
选项中为AddMvC()
设置访问器。即
services.AddMvc(options => options.ModelBindingMessageProvider.SetAttemptedValueIsInvalidAccessor((x, y) => "blah blac");
我在此处设置了所有访问器,但它仍然没有更改默认消息。有谁知道如何设置这些默认值?
答案 0 :(得分:0)
问题是InputFormatter
引发异常,并且异常消息用于modelstate条目。您可以在services.AddMvc().AddJsonOptions(options => options.AllowInputFormatterExceptionMessages = false;)
中禁用它。这将为错误消息添加一个空字符串,您可以检测到该字符串,然后向用户显示常规消息。我还没有找到更好的方法来执行此操作,但是此方法现在就足够了。