首页
学习
活动
专区
工具
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 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 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 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扩展方法使用时会默认显示验证错误时信息。

    91850

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

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

    68820

    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.3K80

    流畅地HtmlHelper-Asp.Net MVC

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

    56880

    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

    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上,会呈现出如下图所示效果,我们可以看到作为标签显示文字正式我们定义资源文件内容

    96460

    MVC我们需要深入学习信息

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

    42810

    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.4K20

    ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers

    序言 ASP.NET MVC允许开发者创建自定义HTML Helpers,不管是使用静态方法还是扩展方法。一个HTML Helper本质上其实是输出一段HTML字符串。...内置HTML Helpers ASP.NET MVC内置了若干标准HTML Helpers,通过@HTML来调用这些方法视图引擎解析、渲染输出HTML内容,这允许开发者多个视图中重用公共方法。...内置ASP.NET MVC helper(@HTML)是基于扩展方法,我们可以再对上述静态方法进行升级——使用扩展方法来创建Bootstrap helpers。...调用扩展方法 添加扩展方法,返回MvcHtmlString public static MvcHtmlString BootstrapButton(this HtmlHelper helper, string...创建自动闭合Helpers ASP.NET MVC,内置@HTML.BeginForm() helper就是一个自动闭合helper。

    1.4K80
    领券