首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ASP.net核心MVC3.1的HtmlHelper扩展方法中使用DataAnnotation本地化程序

,可以实现对表单字段的本地化验证。DataAnnotation是一种用于在模型类中定义验证规则的特性。通过在模型类的属性上添加DataAnnotation特性,可以指定该属性的验证规则,例如必填、最大长度、正则表达式等。

要在HtmlHelper扩展方法中使用DataAnnotation本地化程序,需要进行以下步骤:

  1. 配置本地化资源文件:首先,需要在项目中创建一个本地化资源文件,用于存储各种验证错误消息的本地化文本。可以根据需要创建多个资源文件,例如ValidationResources.resx用于存储英文文本,ValidationResources.zh-CN.resx用于存储中文文本。在资源文件中,可以添加与DataAnnotation特性对应的键值对,例如RequiredErrorMessageMaxLengthErrorMessage等。
  2. 设置本地化语言:在应用程序的启动代码中,可以通过CultureInfo.DefaultThreadCurrentCultureCultureInfo.DefaultThreadCurrentUICulture属性设置当前线程的默认本地化语言。例如,可以在Startup.cs文件的Configure方法中添加以下代码来设置当前线程的默认本地化语言为中文:
代码语言:txt
复制
var supportedCultures = new[] { new CultureInfo("zh-CN") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture("zh-CN"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
});
  1. 创建HtmlHelper扩展方法:可以创建一个静态类,其中包含扩展方法,用于在视图中生成带有本地化验证错误消息的表单字段。例如,可以创建一个名为HtmlHelperExtensions.cs的文件,并添加以下代码:
代码语言:txt
复制
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using System;
using System.Linq.Expressions;

namespace YourNamespace
{
    public static class HtmlHelperExtensions
    {
        public static IHtmlContent LocalizedValidationMessageFor<TModel, TProperty>(
            this IHtmlHelper<TModel> htmlHelper,
            Expression<Func<TModel, TProperty>> expression)
        {
            var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            var modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(
                ExpressionHelper.GetExpressionText(expression));
            var modelState = htmlHelper.ViewData.ModelState[modelName];
            var errorMessage = modelState?.Errors[0]?.ErrorMessage;

            if (!string.IsNullOrEmpty(errorMessage))
            {
                return htmlHelper.ValidationMessageFor(expression, errorMessage);
            }

            return htmlHelper.ValidationMessageFor(expression);
        }
    }
}
  1. 在视图中使用扩展方法:在需要使用本地化验证错误消息的表单字段处,可以使用扩展方法LocalizedValidationMessageFor替代原来的ValidationMessageFor方法。例如,可以在视图中添加以下代码:
代码语言:txt
复制
<div class="form-group">
    <label asp-for="Name"></label>
    <input asp-for="Name" class="form-control" />
    @Html.LocalizedValidationMessageFor(model => model.Name)
</div>

以上步骤可以实现在ASP.net核心MVC3.1的HtmlHelper扩展方法中使用DataAnnotation本地化程序。通过配置本地化资源文件、设置本地化语言、创建HtmlHelper扩展方法,并在视图中使用扩展方法,可以实现对表单字段的本地化验证,并显示本地化的验证错误消息。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/tencentdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Model验证系统运行机制是如何实现

基于HTTP-GETAction方法Index我们创建一个Contact对象并使用默认View将其呈现出来。...而ModelState列表属于ViewData一部分,所以可以直接在View中被使用,这对错误信息View呈现提供了可能。现在我们就来讨论验证信息View呈现问题。...如下面的代码片断所示,静态ValidationExtensions类HtmlHelper定义了4个名为ValidationMessage扩展方法,为HtmlHelper定义了一个名为...ValidationMessage针对验证消息呈现也可以按照如下方式调用HtmlHelper<TModel〉扩展方法ValidationMessageFor来实现。...错误消息EditForModel方法呈现 一个强类型View调用HtmlHelper扩展方法EditorForModel将整个Model对象以编辑模式呈现出来时,如果某个属性对应

1.8K110

ASP.NET MVC以ValueProvider为核心值提供系统: DictionaryValueProvider

View针对某个子Action方法调用通过如下所示HtmlHelper扩展方法Action来实现。...如下所示代码反映Action方法Index对应View定义,在这里我们直接调用HtmlHelper扩展方法Action执行定义HomeControllerAction方法DisplayRouteData...除此之外,还具有一个DictionaryValueProvider对象,对应Key是一个GUID,这正是我们上面介绍针对HtmlHelper扩展方法Action中指定路由数据创建...也就是说,ValueProvider集合先后次序决定了其使用优先级。...ASP.NET MVC以ValueProvider为核心值提供系统: NameValueCollectionValueProvider ASP.NET MVC以ValueProvider为核心值提供系统

1.8K80

ASP.NET MVC5Model验证

Model验证是ASP.NET MVC重要部分,它主要用于判断输入数据类型及值是否符合我们设定规则,这篇文章就介绍下ASP.NET MVCModel验证几种方式。...ValuationAttribute 除了使用DataAnnotation预定义一些特性进行数据验证外,我们还可以自定义一些验证特性。...这里我们通过覆写DataAnnotation命名空间中ValudationAttribute类IsValid方法来实现自定义验证。...; } } } 运行程序: ? 前端验证 上述验证均是服务器端进行,除此之外我们也可以使用js客户端进行数据验证。...除了我们自己手写js代码外,ASP.NET MVC也提供了前端验证方法,要启用ASP.NET MVC提供前端验证方法需要在页面引入三个js文件: jquery-1.10.2.min.js(也可以是其它版本

1.5K20

ASP.NET MVC HtmlHelper

ASP.NET MVC之 HtmlHelper ASP.NET MVC项目的开发,一般会默认使用Razor视图来进行View层编写,从而实现高效率C#/HTML代码混写。...扩展方法是一种特殊静态方法,但可以像扩展类型上实例方法一样进行调用。我们可以回到第一部分对HtmlHelper扩展类-InputExtension类上,它是对于HtmlHelper扩展。...(); this关键字  可以从方法名定义中看出,第一个参数都是this HtmlHelper htmlHelper,代表对HtmlHelper扩展; 自定义扩展方法   1.Models文件夹下新建一个类...这是因为如果不改命名空间,我们要使用自定义扩展方法需要在每个页面引入Models(MyHtmlHelper所在那个命名空间)这个命名空间,为了防止重复命名空间引入操作(想想我们使用Html.TextBox...,于是我们将命名空间与HtmlHelper类所在命名空间保持一致。   4.页面我们就可以使用我们自己写扩展方法了 @Html.MyExtHtmlLabel("EdisonChou")

1.8K30

ASP.NET MVCModel元数据与Model模板:将”ListControl”引入ASP.NET MVC

我们不仅可以创建相应模板来根据Model元数据控制种类型数据UI界面上呈现方法,还可以通过一些扩展来控制Model元数据本身。...对于ASP.NET MVC来说,我们可以通过HtmlHelper/HtmlHelper扩展方法DropDownList/DropDownListFor和ListBox/ListBox界面上呈现一个下拉框和列表框...方法,我们创建了一个具体Employee对象并对它所有属性进行了相应设置,最终将该对象呈现在默认View。.../HtmlHelper扩展生成“ListControl”HTML 基于四种“列表控件”HTML生成是通过定义HtmlHelper扩展方法来实现,如下面的代码所示,定义ListControlExtensions...四个扩展方法实现了针对这四种列表控件UI呈现。

4.8K60

ASP.NET MVC路由扩展:链接和URL生成

System.Web.Mvc.Html.LinkExtensions,我们为HtmlHelper定义了如下所示一系列ActionLink方法重载。...我们将RouteHelper定义创建一个ASP.NET Web应用,如下面的代码片断所示,RouteHelper具有RequestContext和RouteCollection两个属性,前者构造函数中指定...页面加载事件处理方法,我们根据手工创建HttpRequest和HttpResponse创建一个HttpContext对象,并进一步创建HttpContextWrapper对象。...但是在有的时候,我们需要针对注册某个具体路由对象来生成URL或者对应链接,这时候就需要使用UrlHelper和HtmlHelper另外一组方法了。...routeValues, IDictionary htmlAttributes); 14: } ASP.NET MVC路由扩展:路由映射 ASP.NET MVC路由扩展

1.7K70

通过对HtmlHelper扩展简化“列表控件”绑定

ASP.NET MVC通过对HtmlHelperHtmlHelper扩展实现了对不同类型元素绑定,它们以扩展方法形式定义SelectExtensions。...当我们操作这些扩展方法时候,必须手工地提供以 IEnumerable对象表示列表项。...扩展方法实现基于“列表类别”绑定 现在我们来定义针对HtmlHelper扩展方法通过从CodeManager获取Code列表来进行“列表控件”绑定。...我们为HtmlHelper编写了如下4个扩展方法用于针对DropDownList和ListBox绑定,参数我们无须提供SelectListItem列表,而只需要提供Code和类别即可。...创建HomeController,我们将初始化Person对象呈现定义Index操作

1.3K60

快速入门系列--MVC--04模型

即使不使用Razor视图引擎,直接使用静态HTML5页面,该模块仍然不可或缺。现在简单介绍一下ASP.NET MVC相关Model绑定。     ...ASP.NET MVC框架,Model绑定本质上就是为目标Action方法生成参数列表过程,这些参数列表来源可能是请求URL,可能是HTTP请求头或请求体,通过参数元数据信息可以得到相关内容...今天学习ASP.NET MVCModel验证,刚开时会以为这一章会比较简单,因为之前已经学习过了Model元数据解析、Model绑定,Model验证可能就只是DataAnnotation相关类介绍...首先介绍最为核心ModelValidator抽象类,该类主要成员方法包括:GetClientValidationRules(),返回值为客户端验证规则,最终由HtmlHelper模板方法渲染为html...同时注意可以通过ModelStateAddModelError方法添加错误信息,EditorForModel扩展方法使用时会默认显示验证错误时信息。

89550

ASP.Net MVC开发基础学习笔记:二、HtmlHelper扩展方法

ASP.Net MVC微软并没有提供类似服务器端控件那种开发方式,毕竟微软MVC就是传统请求处理响应回归。所以抛弃之前那种事件响应模型,抛弃服务器端控件也理所当然。   ...这里就涉及到一个叫做“扩展方法东东了,HtmlHelper扩展方法 System.Web.Mvc.Html 命名空间中。 ...例如我们要输出刚刚那句话,我们可以如下使用: 哈哈") %>   其生成代码为: 哈哈   HtmlHelper还提供了许多扩展方法供我们方便创建...这是因为如果不改命名空间,我们要使用自定义扩展方法需要在每个页面引入Models(MyHtmlHelper所在那个命名空间)这个命名空间,为了防止重复命名空间引入操作(想想我们使用Html.TextBox...(4)页面我们就可以使用我们自己写扩展方法了   (5)查看页面效果 ?

67220

ASP.NET MVCModel元数据与Model模板:模板获取与执行策略

当我们调用HtmlHelper或者HtmlHelper模板方法对整个Model或者Model某个数据成员以某种模式(显示模式或者编辑模式)进行呈现时候,通过预先创建代表Model...如下面的代码片断所示,默认Index操作方法我们创建了一个Triangle对象将其呈现在默认View。...根据Model元数据对目标模板解析是整个模板方法执行流程中最核心部分,也是本篇讨论重点。...我们以针对HtmlHelper扩展方法DisplayFor为例,看看针对通过表达式expression获取Model对象是如何以显示模式呈现出来。...如果默认模板列表名称均与指定名称不匹配,进入下一次迭代。

1.6K60

ASP.NET MVC中使用“RadioButtonList”和“CheckBoxList”

《为HtmlHelper添加一个RadioButtonList扩展方法我通过对HtmlHelperHtmlHelper扩展使我们可以采用”RadioButtonList”方式对一组类型为...二、实例演示 我们还是以《为HtmlHelper添加一个RadioButtonList扩展方法》例子来演示RadioButtonList和CheckBoxList用法。...HomeController,我们定义了如下两个Index方法,它们分别用于测试出栈数据(Model->UI)入栈数据(UI-〉Model)绑定。...对于Person三个基于列表属性,我们分别调用了自定义扩展方法RadioButtonListFor和CheckBoxListFor进行了绑定。...三、两组扩展方法具体实现 现在我们简单地来看看RadioButtonList/RadioButtonListFor和CheckBoxList/CheckBoxListFor这两组扩展方法实现。

1.2K80

流畅地HtmlHelper-Asp.Net MVC

今天抛开 Fluent NHibernate 不谈,我们来谈谈 Asp.Net MVC ,MVCView,我们经常会使用HtmlHelper来生成各种html代码(可能描述不太清楚看代码吧,呵呵)...HtmlHelper原先功能不是很多,还好有很多扩展方法,我们能用它来生成一个Input控件,比如: 我们使用上面的代码能生成一个没有值单行文本框...> 怎么样,是不是代码看上去很优美,少去了硬编码,怎么看都好看,哈哈,但是HtmlHelper没有这种扩展方法,那我们只能自己来写一个扩展。...因为也是刚尝试接触MVC,看了一下它源代码,HtmlHelper扩展方法都在 System.Web.Mvc.Html 命名空间内,大概看了下InputExtensions代码,大致是根据传入类型...不过HtmlHelper还有很多扩展方法,所以还需要写很多代码,俺会一点一点去添加。 说实在,MVC好像很多地方要使用那种硬编码,实在不爽,所以要改造一个自己适合环境还真不容易啊。

54580

ASP.NET MVC Model元数据及其定制:一个重要接口IMetadataAware

,默认Index操作方法具有一个类型为Foo参数,该参数直接作为Model呈现在默认View。...该View,我们直接调用HtmlHelperEditorForModel方法将Foo对象以编辑模式呈现出来。...使用该特性时候,我们需要显式制定表示显示名称Name属性,如果需要进行本地化处理,需要将显示内容定义某个资源文件,并通过ResourceType属性指定该资源文件生成类型。...接下来我们来演示如何使用这个DisplayTextAttribute特性来替换DisplayAttribute特性进行显示名称设置,为此我们通过Visual StudioASP.NET MVC 项目模板创建空...EditorForModel方法将一个具体Employee对象以编辑模式显示某个Model类型为Employee强类型View上,会呈现出如下图所示效果,我们可以看到作为标签显示文字正式我们定义资源文件内容

94360

ASP.NET MVC客户端验证:jQuery验证Model验证实现

简单了解了Unobtrusive JavaScript形式验证jQuery编程方式之后,我们来介绍ASP.NET MVC是如何利用它实现客户端验证。...服务端验证最终实现在相应ModelValidator,而最终验证规则定义相应ValidationAttribute;而客户端验证规则通过HtmlHelper相应扩展方法(比如...一个以此Contact为Model类型View,如果我们调用HtmlHelper扩展方法EditorForModel,最终会生成如下一段HTML。...当我们某个View调用HtmlHelper扩展方法将Model对象某个属性以表单输入元素呈现出来时候,会采用我们前面介绍ModelValidator提供机制根据目标属性对应...ASP.NET MVC客户端验证:jQuery验证 ASP.NET MVC客户端验证:jQuery验证Model验证实现 ASP.NET MVC客户端验证:自定义验证

7.1K70

HtmlHelper添加一个RadioButtonList扩展方法

在前面一篇文章,我们通过对HtmlHelper扩展简化了对DropDownList(Single-Line-Select)和ListBox(Multiple-Line-Select)绑定,以及对作为数据源列表进行单独维护...现在我们为HtmlHelper/HtmlHelper添加一个RadioButtonList/RadioButtonListFor扩展方法实现一组RadioButton绑定。...[源代码从这里下载] 一、RadioButtonListFor使用 我们先来显示一下扩展RadioButtonListFor方法用法。...二、维护选项列表组件CodeManager 由于一个应用,作为绑定到“列表控件”上选项列表可能会有很多,将它们进行单独地维护是一个理想选择。...CodeManager通过一个静态字段作为列表数据存储,上面例子中使用三组列表维护于此。GetCodes方法用于返回指定“类别”列表选项。

913110

MVC我们需要深入学习信息

htmlHelper 和UrlHelper 类,这是我们View层进行页面显示组件常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?...因为使用扩展方法,我们自己是否可以正确定义一些helper类来满足我们自己业务需求,对于扩展方法我们又理解多少?htmlHelper那几个方法我们是否完全掌握?...我本人采用是AutoFac,以及如果在MVC中使用这种框架来实现程序灵活性控制呢?当然IOC实现方式,一共就三种,构造函数,属性还有另外一个不常用方法注入。...继续努力吧 MVC 运行机制,我们知道asp.net 是一个非常复杂框架结构,MVC就运行在这种复杂框架结构之上,那么我们知道MVCController是如何激活呢?...自定义数据验证,我们来扩展我们业务逻辑。 Razor 语法 这是MVC 3新添加一个语法结构,我们可以使用它来完成我们View层 显示数据,但是使用@符号也有很多问题要注意?

42010

ASP.NET MVC5多语言切换快速实现方案

功能 实现动态切换语言,Demo 做了三种语言库可以切换,包括资源文件定义,实体对象属性设置,后台代码Controller,IAuthorizationFilter,HtmlHelper实现,做法比较简单易学易用...,配合我之前发布# MVC Scaffolding SmartCode-Engine 更新 模板中新增了多语言资源文件生成功能,发现我这个框架和目前很流行ABP框架是类似更有点像收费版Asp.net...Zero,只是我做更加轻量级,更方便,更快速,可惜Asp.net Core 下Scaffolding这块扩展不想MVC5那么容易.这块还需要研究,下一步就准备升级到asp.net core. ?...Github download Demo 具体实现方法 定义实体类 通过Display属性定义Name ResourceType,需要读取语言库资源文件 ?...生成资源文件 通过mvc scaffolding扩展工具会自动生成对应实体对象3个资源文件默认中文,繁体,英文 繁体需要自己翻译,英文内容根据字段名定义后已大写字母分割 DateTime 现实 Date

1.3K20
领券