ASP.Net Core - Как использовать пользовательский ModelBindingMessageProvider - PullRequest
0 голосов
/ 07 марта 2019

У меня есть простое приложение ASP.Net Core, которое использует бритву. Пользовательские формы создаются с помощью атрибутов аннотаций модели и данных. Сообщение об ошибке неправильных входных значений по умолчанию является английским. Я знал, что могу перевести сообщение по умолчанию с помощью ' ModelBindingMessageProvider '.

Ниже вы можете найти рабочий путь (в Startup.cs), обновив ' DefaultModelBindingMessageProvider ':

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(o =>
    {
        // see: https://stackoverflow.com/questions/40828570/asp-net-core-model-binding-error-messages-localization
        o.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor(u => "My custom validation error message");
    });
}

Я бы предпочел не настраивать перевод прямо в файле startup.cs. Один из способов сделать это - использовать пользовательский класс, который наследуется от ModelBindingMessageProvider.

public class MyModelBindingMessageProvider : ModelBindingMessageProvider
{
    public override Func<string, string> ValueMustNotBeNullAccessor => o => "My custom validation error message";
}

Вот мой вопрос:

  1. Где зарегистрироваться? Мой собственный класс?
  2. Это хороший способ? Какова лучшая практика atm.?

(реальное приложение, конечно, использует строковые ресурсы)

...