asp.net MVC实现验证信息多语言

标签: Asp.net-MVC
发布时间: 2013/2/3 18:44:49

下面我们来新建一个资源文件,首先我们添加一个目录 叫做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中更改错误信息的显示。

public class UserModel
     {
         [Required(ErrorMessageResourceName = "Name", ErrorMessageResourceType = typeof(Resources.Resource1))]
         public string UserName { get; set; }
  
         [Required(ErrorMessage = "密码不能为空")]
         [DataType(DataType.Password)]
         public string Password { get; set; }
     }

请注意ErrorMessageResourceName 表示的是资源文件中的key,而后面的type就是表示的资源类。

前台代码不变,我们调试一下,查看结果。

这是在中文环境中的显示结果,我们可以通过浏览器的语言选项,来更改默认的区域,但是可能我的ie版本是10.0,更改了语言选项,没有看到更改为英文,所以我直接在前台更改线程的区域。

@{
     Layout = "~/views/shared/_layout.cshtml";
 }
 @model MvcWeb.Models.UserModel
 <!DOCTYPE html>
 <html>
 <head>
     <title>Index</title>
     <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
     <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
     <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
 </head>
 <body>
 @{
     Html.EnableClientValidation();
     System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
  
     System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-us");
     }
     @using (Html.BeginForm())
     {
         @Html.EditorForModel()
         <input type="submit" value="提交" />
     }
 </body>
 </html>

注意我更改了线程的Culture,现在我们再来查看一下效果。有图有真相

语言显示了英文。这个功能点本身没有什么特别的,我在这里提出来只是为了说明在MVC中如何使用资源文件实现多语言。这是过年前的博客,肯定不是最后一篇,最近公司要用到wcf,以前都是用web 服务,现在用wcf,一切都是初学者,幸好我功底深厚,学习起来还算比较顺利。有机会和大家分享一下咱学习wcf的过程。


赞助商