asp.net MVC 验证错误信息本地化
asp.net MVC 提供了模型验证的快捷方式,我在上一篇博客中有专门提到模型验证的类型以及如何自定义验证,这次我们来探讨一下模型验证信息如何本地化,活着直白点说如何在不同语言中显示不同的错误信息。
咱们先来说一下,不采用资源文件,我们如何处理错误信息的。
首先我们定义UserModel 领域模型类
1 public class UserModel 2 { 3 [Required(ErrorMessage="用户名不能为空")] 4 public string UserName { get; set; } 5 6 [Required(ErrorMessage="密码不能为空")] 7 [DataType(DataType.Password)] 8 public string Password { get; set; } 9 }
领域模型类很简单,就是定义了两个属性,用户名和密码,然后验证他们是必填项。
我们在View层,采用简单的方式来显示这个领域模型,因为不涉及到具体的逻辑,所以我们一切从简。
1 @{ 2 Layout = "~/views/shared/_layout.cshtml"; 3 } 4 @model MvcWeb.Models.UserModel 5 <!DOCTYPE html> 6 <html> 7 <head> 8 <title>Index</title> 9 <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 10 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 11 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 12 </head> 13 <body> 14 @using (Html.BeginForm()) 15 { 16 @Html.EditorForModel() 17 <input type="submit" value="提交" /> 18 } 19 </body> 20 </html>
这些是初学者都很熟悉的一些操作,当然我们今天的重点不是这个,是通过资源文件来动态的显示不同区域的错误信息。下面我们来看一下错误信息显示。
从上面的错误信息显示中,我们可以看出,错误信息是可以正确显示,但是也有一些问题,比如说错误信息是硬编码的,不能动态的更改,也不能适应不同区域显示。下面我们通过资源文件来更改错误信息的显示,虽然说这个功能点如果知道了会很简单,但是确实如果自己摸索的话,还真是要费一点功夫的,我也是看了好几个小时也才慢慢熟悉。
下面我们来新建一个资源文件,首先我们添加一个目录 叫做Resources,在里面添加一个资源文件,Resource1.resx,请注意:我们不能添加了resource.en-us.resx 和resource.zh-cn.resx 两个资源文件,而没有resource.resx文件,这样的话 在代码中是看不到resource这个资源类的,所以请注意一下。添加了resource1.resx 和resource1.en-us.resx 两个资源文件,并且添加一个Name key 和用户名不能为空以及User Name required,这两个值是在两个文件中的。
现在我们在Model中更改错误信息的显示。
1 public class UserModel 2 { 3 [Required(ErrorMessageResourceName = "Name", ErrorMessageResourceType = typeof(Resources.Resource1))] 4 public string UserName { get; set; } 5 6 [Required(ErrorMessage = "密码不能为空")] 7 [DataType(DataType.Password)] 8 public string Password { get; set; } 9 }
请注意ErrorMessageResourceName 表示的是资源文件中的key,而后面的type就是表示的资源类。
前台代码不变,我们调试一下,查看结果。
这是在中文环境中的显示结果,我们可以通过浏览器的语言选项,来更改默认的区域,但是可能我的ie版本是10.0,更改了语言选项,没有看到更改为英文,所以我直接在前台更改线程的区域。
1 @{ 2 Layout = "~/views/shared/_layout.cshtml"; 3 } 4 @model MvcWeb.Models.UserModel 5 <!DOCTYPE html> 6 <html> 7 <head> 8 <title>Index</title> 9 <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 10 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 11 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 12 </head> 13 <body> 14 @{ 15 Html.EnableClientValidation(); 16 System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US"); 17 18 System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-us"); 19 } 20 @using (Html.BeginForm()) 21 { 22 @Html.EditorForModel() 23 <input type="submit" value="提交" /> 24 } 25 </body> 26 </html>
注意我更改了线程的Culture,现在我们再来查看一下效果。有图有真相
语言显示了英文。这个功能点本身没有什么特别的,我在这里提出来只是为了说明在MVC中如何使用资源文件实现多语言。这是过年前的博客,肯定不是最后一篇,最近公司要用到wcf,以前都是用web 服务,现在用wcf,一切都是初学者,幸好我功底深厚,学习起来还算比较顺利。有机会和大家分享一下咱学习wcf的过程。
asp.net MVC 验证错误信息本地化相关推荐
- Asp.net MVC验证那些事(4)-- 自定义验证特性
在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求.比如, 在注册用户的过程中,往往需要用户勾选"免责声明", ...
- Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
上篇文章Asp.net MVC验证那些事(1)-- 介绍和验证规则使用中,介绍了Asp.net MVC中的验证功能以及如何使用.这里将对MVC中内置的验证规则进行总结. 一,查找所有验证规则 上篇文章 ...
- 验证错误信息jquery validation
题记:写这篇博客要主是加深自己对验证错误信息的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 单页面多表单的jquery 验证怎么办?想要添加自定义的验证函数怎么办? 不知道大家有 ...
- ASP.net MVC自定义错误处理页面的方法
在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...
- 【转】ASP.net MVC自定义错误处理页面的方法
在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...
- asp数据库服务器端连接错误信息,主数据库连接出错,请检查数据库连接字符串!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我用的是小旋风asp服务器,运行后,显示:主数据库连接出错,请检查数据库连接字符串! 请问各位大侠那里出错了?? conn.asp里面的代码是: Dim ...
- yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...
在安装旧版本macOS系统时,比如macOS Mojave 10.14.macOS Sierra.OS X El Capitan.OS X Yosemite.OS X Mavericks等系统,会出现 ...
- AJAX+jQuery+ASP实现实时验证身份证信息是否已存在---人事系统
很多时候在网站上注册时,我们会发现,注册表单通常需要检查用户名和电子邮件地址的可用性:从而确保用户之间不拥有相同的用户名和电子邮件地址:一些网站喜欢在用户提交填写的用户信息时,做信息可用性的检查,而一 ...
- Bootstrap整合ASP.NET MVC验证、jquery.validate.unobtrusive
没什么好讲的,上代码: (function ($) {var defaultOptions = {validClass: 'has-success',errorClass: 'has-error',h ...
最新文章
- 微信小程序组件 日历
- 记一次订单号的重复事故
- 微软360游戏机改服务器,战斗民族就是干高玩将Xbox 360改装成PC简直改装达人
- 一文详解自然语言处理任务之共指消解
- php 工厂模式作用,PHP工厂模式的好处概述
- Magnet for mac(窗口布局辅助工具)
- CentOs 6.2 x64双网卡绑定
- DSO(Direct Sparse Odometry)
- 【音频】G711编码原理
- ThinkPad E431如何关闭触摸板
- 将xlsx转换为xls格式
- 为什么用Win32forth编程的程序员不多
- dim c语言,编程基础-C程序的组成
- html文字往右边偏移怎么做,div向右偏移设置 css让div靠右移必定距离
- 最新目标跟踪评估指标汇总
- Geany下载与安装
- 属兔2013年蛇年运程
- 两个服务器组虚拟机,linux 两台虚拟机
- 系统工程师学习(简单Linux命令应用)(一)
- 使用opencv查找两张图片不同的部分
热门文章
- 如何看待阿里云加入Linux基金会金牌会员?
- 存储过程与触发器的应用
- vue学习笔记(五):对于vuex的理解 + 简单实例
- 001-spring结合quartz使用
- X权限 gpasswd getent 命令详解
- 后端开发如何设计数据库系列文章(二)设计大数据量表结构
- Kubernetes学习笔记之Calico CNI Plugin源码解析(一)
- ES6函数相关包含箭头函数
- python php multiprocessing,Python多进程并发(multiprocessing)用法实例详解
- jQueryEasyUI Messager基本使用