gpt4 book ai didi

asp.net-core-2.1 - 隐式本地化法语 `Required` 注释

转载 作者:行者123 更新时间:2023-12-04 12:01:11 27 4
gpt4 key购买 nike

TLDR;
如何获得行为

[Required(ErrorMessage = "Le champ {0} est obligatoire")]

虽然只是写作
[Required]

据我了解 documentation不提供隐式本地化一组给定的 DataAnnotations 的方法。

我想要注释的错误消息,例如 RequiredStringLength在不接触其他人的情况下可以过度骑行,例如 Display并且无需使用 ErrorMessage 显式指定翻译属性。

注意:我只需要将消息翻译成法语,因此不需要将解决方案绑定(bind)到请求的语言。

我尝试了以下操作:

来自 this GitHub 线程

Startup.cs
services.AddMvc(options => options.ModelBindingMessageProvider.AttemptedValueIsInvalidAccessor =
(value, name) => $"Hmm, '{value}' is not a valid value for '{name}'."));

给了我以下错误

Property or indexer 'DefaultModelBindingMessageProvider.AttemptedValueIsInvalidAccessor' cannot be assigned to -- it is read only



我找不到任何可以作为这个对象的 setter 的属性。

来自 this所以答案

Startup.cs 服务.AddSingleton();

并创建一个类,如跟随
public class LocalizedValidationAttributeAdapterProvider : IValidationAttributeAdapterProvider
{
private readonly ValidationAttributeAdapterProvider _originalProvider = new ValidationAttributeAdapterProvider();

public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer)
{
/* override message */
}
}

但这仅捕获了 DataType注解

最佳答案

在 .Net Core 2 中,AccessorModelBindingMessageProvider 中的属性是只读的,但您仍然可以使用 Set...Accessor() 设置它们方法。这是与我正在使用的代码类似的代码,感谢对 ASP.NET Core Model Binding Error Messages Localization 的回答.

public static class ModelBindingConfig
{
public static void Localize(MvcOptions opts)
{
opts.ModelBindingMessageProvider.SetMissingBindRequiredValueAccessor(
x => string.Format("A value for the '{0}' property was not provided.", x)
);

opts.ModelBindingMessageProvider.SetMissingKeyOrValueAccessor(
() => "A value is required."
);
}
}


// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// ...

services.AddMvc(
opts =>
{
ModelBindingConfig.Localize(opts);
})
.AddViewLocalization()
.AddDataAnnotationsLocalization();
}

关于asp.net-core-2.1 - 隐式本地化法语 `Required` 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50888963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com