Переопределение сообщений об ошибках ModelBindingMessageProvider - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть .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");

Я установил там ВСЕ средства доступа, и он по-прежнему не меняет сообщение по умолчанию.Кто-нибудь знает, как установить эти значения по умолчанию?

1 Ответ

0 голосов
/ 25 февраля 2019

Проблема в том, что InputFormatter вызывает исключение, и сообщение об исключении используется для записи состояния модели.Вы можете отключить это в services.AddMvc().AddJsonOptions(options => options.AllowInputFormatterExceptionMessages = false;).Это добавит пустую строку для сообщения об ошибке, которое вы можете обнаружить, а затем просто отобразить общее сообщение для пользователя.Я не нашел лучшего способа сделать это, но этого метода пока хватит.

...