ITPub博客

首页 > 数据库 > Oracle > asp.net MVC 验证错误信息本地化

asp.net MVC 验证错误信息本地化

Oracle 作者:jackiewujian 时间:2013-08-04 17:52:00 0 删除 编辑

asp.net MVC 提供了模型验证的快捷方式,我在上一篇博客中有专门提到模型验证的类型以及如何自定义验证,这次我们来探讨一下模型验证信息如何本地化,活着直白点说如何在不同语言中显示不同的错误信息。

咱们先来说一下,不采用资源文件,我们如何处理错误信息的。

首先我们定义UserModel 领域模型类

1     public class UserModel

2     {

3         [Required(ErrorMessage="用户名不能为空")]

4         public string UserName { get; set; }

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

 6

 7

 8     Index

 9    

10    

11    

12

13

14     @using (Html.BeginForm())

15     {

16         @Html.EditorForModel()

17        

18     }

19

20

这些是初学者都很熟悉的一些操作,当然我们今天的重点不是这个,是通过资源文件来动态的显示不同区域的错误信息。下面我们来看一下错误信息显示。

从上面的错误信息显示中,我们可以看出,错误信息是可以正确显示,但是也有一些问题,比如说错误信息是硬编码的,不能动态的更改,也不能适应不同区域显示。下面我们通过资源文件来更改错误信息的显示,虽然说这个功能点如果知道了会很简单,但是确实如果自己摸索的话,还真是要费一点功夫的,我也是看了好几个小时也才慢慢熟悉。

下面我们来新建一个资源文件,首先我们添加一个目录 叫做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; }

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

 6

 7

 8     Index

 9    

10    

11    

12

13

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        

24     }

25

26

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23466763/viewspace-1109342/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-03-07