本地化ASP.NET核心模型绑定错误消息

默认错误消息:

MissingBindRequiredValueAccessor    A value for the ‘{0}‘ property was not provided.
MissingKeyOrValueAccessor           A value is required.
ValueMustNotBeNullAccessor          The value ‘{0}‘ is invalid.
AttemptedValueIsInvalidAccessor     The value ‘{0}‘ is not valid for {1}.
UnknownValueIsInvalidAccessor       The supplied value is invalid for {0}.
ValueIsInvalidAccessor              The value ‘{0}‘ is invalid.
ValueMustBeANumberAccessor          The field {0} must be a number.
MissingRequestBodyRequiredValueAccessor       A non-empty request body is required.
NonPropertyAttemptedValueIsInvalidAccessor    The value ‘{0}‘ is not valid.
NonPropertyUnknownValueIsInvalidAccessor      The supplied value is invalid.
NonPropertyValueMustBeANumberAccessor         The field must be a number.

本地化ASP.NET核心模型绑定错误消息

若要本地化ASP.NET Core模型绑定错误消息,请按照下列步骤操作:

  1. 创建资源文件 - 在解决方案的Resources文件夹下创建资源文件,并将文件命名为ModelBindingMessages.resx。名称可以是其他任何名称,但我们将使用它来创建本地化程序。
  2. 添加资源键 - 打开资源文件并添加要用于本地化错误消息的键和值。我使用了键和值
  3. 配置选项 - 在ConfigureServices方法中,添加时Mvc,配置其选项以设置以下内容的消息访问者ModelBindingMessageProvider
  4.  1    services.AddMvc(options =>
     2             {
     3                 IStringLocalizerFactory F = services.BuildServiceProvider().
     4                 GetService<IStringLocalizerFactory>();
     5                 IStringLocalizer L = F.Create("ModelBindingMessages",
     6                     "AspNetCoreLocalizationSample");
     7                 options.ModelBindingMessageProvider.
     8                 SetValueIsInvalidAccessor((x) => L["The value ‘{0}‘ is invalid."]);
     9                 options.ModelBindingMessageProvider.SetValueMustBeANumberAccessor(
    10                     (x) =>L["The field {0} must be a number."]);
    11                 options.ModelBindingMessageProvider.SetMissingBindRequiredValueAccessor(
    12                     (x) => L["A value for the ‘{0}‘ property was not provided.", x]);
    13                 options.ModelBindingMessageProvider.SetAttemptedValueIsInvalidAccessor(
    14                     (x, y) => L["The value ‘{0}‘ is not valid for {1}.", x, y]);
    15                 options.ModelBindingMessageProvider.SetMissingKeyOrValueAccessor(
    16                     () => L["A value is required."]);
    17                 options.ModelBindingMessageProvider.SetUnknownValueIsInvalidAccessor(
    18                     (x) => L["The supplied value is invalid for {0}.", x]);
    19                 options.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor(
    20                     (x) => L["Null value is invalid.", x]);
    21             }).AddDataAnnotationsLocalization()
    22     .AddViewLocalization();
    23     services.Configure<RequestLocalizationOptions>(options =>
    24     {
    25         var supportedCultures = new[]{new CultureInfo("en"), new CultureInfo("zh-cn")};
    26         options.DefaultRequestCulture = new RequestCulture("en", "en");
    27         options.SupportedCultures = supportedCultures;
    28         options.SupportedUICultures = supportedCultures;
    29     });
  5. 还要在Configure方法开头添加此代码:
    1 var supportedCultures = new[] { new CultureInfo("en"), new CultureInfo("zh-CN") };
    2 app.UseRequestLocalization(new RequestLocalizationOptions()
    3 {
    4     DefaultRequestCulture = new RequestCulture(new CultureInfo("en")),
    5     SupportedCultures = supportedCultures,
    6     SupportedUICultures = supportedCultures
    7 });

      



原文地址:https://www.cnblogs.com/SpeakHero/p/9639676.html

时间: 2024-10-06 13:55:05

本地化ASP.NET核心模型绑定错误消息的相关文章

[转] ASP.NET MVC 模型绑定的功能和问题

摘要:本文将与你深入探究 ASP.NET MVC 模型绑定子系统的核心部分,展示模型绑定框架的每一层并提供扩展模型绑定逻辑以满足应用程序需求的各种方法. 同时,你还会看到一些经常被忽视的模型绑定技术,并了解如何避免一些最常见的模型绑定错误. ASP.NET MVC 模型绑定通过引入自动填充控制器操作参数的抽象层.处理通常与使用 ASP.NET 请求数据有关的普通属性映射和类型转换代码来简化控制器操作. 虽然模型绑定看起来很简单,但实际上是一个相对较复杂的框架,由许多共同创建和填充控制器操作所需对

ASP.NET 的模型绑定(ModelBinding)

ModelBinding :用浏览器以HTTP请求方式发生数据来创建.NET对象的过程. 一.理解模型绑定. 1.模型绑定器是由IModelBinder接口定义的.下面是此接口的定义 namespace System.Web.Mvc { public interface IModelBinder { object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext); } } 2.在一

ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)

前面文章介绍了ASP.NET MVC中的模型绑定和验证功能,本着ASP.NET MVC没有魔法的精神,本章内容将从代码的角度对ASP.NET MVC如何完成模型的绑定和验证进行分析,已了解其原理. 本文的主要内容有: ● ModelBinder ● ValuePrivoder ● ModelMetadata ● 简单模型与复杂模型 ● 小结 ModelBinder ModelBinder是ASP. NET MVC用于模型绑定的核心组件,所有的ModelBinder都实现了IModelBinder

ASP.NET MVC——模型绑定

这篇文章我们来讲讲模型绑定(Model Binding),其实在初步了解ASP.NET MVC之后,大家可能都会产生一个疑问,为什么URL片段最后会转换为例如int型或者其他类型的参数呢?这里就不得不说模型绑定了.模型绑定是指,用浏览器以HTTP请求方式发送的数据来创建.NET对象的过程.每当定义具有参数的动作方法时,一直是在依赖着这种模型绑定过程. 准备项目 我们先来创建一个MVC项目,名叫MVCModels,并在Models文件夹中创建一个新的类文件Person. 1 using Syste

asp.net mvc 模型绑定太糙淡了

之前就偶尔遇到模型绑定失效的问题,一直怪自己技术渣渣 不懂人家 而已.最近又遇到 自定义类 绑定失败,看了大牛scot文档 也不得姐..&……**……&*……*…………*%%(此处一堆脏话) 干脆自己直接丰庄个扩展方法,解析request 反序列.效果倍儿好!再也不担心模型绑定失效了,参数我想怎么传就怎么穿,顺带避免了微软时间/date*****/ 的大坑 哇哈哈哈.---------------------既然别人提供的封装方法那么难使 为嘛不自己造个? 大不了一样糙蛋呗 oh yeah

ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用到了,你再去看理论性的文章时才会豁然开朗,这是我一直以来学习技术的方法.本文我们来讲解.NET Core中的模型绑定. 话题 在ASP.NET Core之前MVC和Web APi被分开,也就说其请求管道是独立的,而在ASP.NET Core中,WebAPi和MVC的请求管道被合并在一起,当我们建立控

【转】ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用到了,你再去看理论性的文章时才会豁然开朗,这是我一直以来学习技术的方法.本文我们来讲解.NET Core中的模型绑定. 话题 在ASP.NET Core之前MVC和Web APi被分开,也就说其请求管道是独立的,而在ASP.NET Core中,WebAPi和MVC的请求管道被合并在一起,当我们建立控

ASP.NET MVC 的自定义模型绑定

最近在研究 ASP.NET MVC 模型绑定,发现 DefaultModelBinder 有一个弊端,就是无法实现对浏览器请求参数的自定义,最初的想法是想为实体模型的属性设置特性(Attribute),然后通过取得设置的特性值对属性进行赋值,研究了好久 MVC 源码之后发现可以通过重写 DefaultModelBinder 的 BindProperty 方法可以达到预期的目的. ASP.NET MVC 中有一个自定义模型绑定特性 CustomModelBinderAttribute,打算通过重写

ASP.NET MVC 4 (九) 模型绑定

模型绑定指的是MVC从浏览器发送的HTTP请求中为我们创建.NET对象,在HTTP请求和C#间起着桥梁的作用.模型绑定的一个最简单的例子是带参数的控制器action方法,比如我们注册这样的路径映射: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Inde