我有一个使用剃须刀的简单ASP.Net Core应用程序。用户表单由模型和数据注释属性生成。输入值错误的错误消息默认为英语。我知道我可以在“ ModelBindingMessageProvider ”的帮助下转换默认消息。
在下面,您可以通过更新“ DefaultModelBindingMessageProvider ”来找到一种可行的方法(在Startup.cs中):
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";
}
这是我的问题:
(真正的应用程序当然会使用字符串资源)
答案 0 :(得分:0)
不幸的是,似乎无法在ASP.NET Core 3.1中提供ModelBindingMessageProvider
的自定义实现。
MvcOptions
的{{3}}将ModelBindingMessageProvider
属性设置为DefaultModelBindingMessageProvider
的实例。
ModelBindingMessageProvider = new DefaultModelBindingMessageProvider();
constructor本身没有设置器,也不属于ModelBindingMessageProvider
类型。
public DefaultModelBindingMessageProvider ModelBindingMessageProvider { get; }
tl; dr 即使在这里拥有自己的实现选项很有意义,您也必须在Startup
类中配置消息。