ASP.NET MVC - 多国语言的简单实现
定义一个类
public class Book
{
public int ID { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public double Price { get; set; }
public double Action { get; set; }
}
右击项目-添加ASP.NET文件夹-创建App_GlobalResources-右击此文件夹-添加-资源文件,命名为Resource1.resx。这个文件是一个以文件名为类名的类型,名称和值分别代表了Book模型的属性名字的存取键和属性名字的存取值,Book的属性们是以键值对的方式被添加到资源文件的。注意将资源文件类的访问修饰符设为public。

接下来再复制一份Resource1.resx,命名为Resource1.zh.resx,前一个表示默认的英文,后一个表示中文。

为Book的属性添加数据注解
public class Book
{
[Display(Name = "IDDisplay", ResourceType = typeof(App_GlobalResources.Resource1))]
public int ID { get; set; } [Display(Name = "TitleDisplay", ResourceType = typeof(App_GlobalResources.Resource1))]
public string Title { get; set; } [Display(Name = "AuthorDisplay", ResourceType = typeof(App_GlobalResources.Resource1))]
public string Author { get; set; } [Display(Name = "PriceDisplay", ResourceType = typeof(App_GlobalResources.Resource1))]
public double Price { get; set; } [Display(Name = "ActionDisplay", ResourceType = typeof(App_GlobalResources.Resource1))]
public double Action { get; set; }
}
接下来在Test方法中将默认显示的属性名绑定到ViewBag中,然后从客户端读取这些字段名称
public class DefaultController : Controller
{
private List<Book> books = new List<Book>
{
new Book{ ID=, Title="寂静的春天", Author="xxx",Price=18.9 },
new Book{ ID=, Title="此时此地", Author="xxx",Price=11.9 },
new Book{ ID=, Title="无人生还", Author="xxx",Price=12.9 },
new Book{ ID=, Title="万有引力之虹", Author="xxx",Price=15.9 },
new Book{ ID=, Title="全球通史", Author="xxx",Price=18.9 },
new Book{ ID=, Title="来自民间的叛逆", Author="xxx",Price=18.1 },
new Book{ ID=, Title="雨天炎天", Author="xxx",Price=18.5 },
new Book{ ID=, Title="荒凉天使", Author="xxx",Price=17.9 },
new Book{ ID=, Title="精神分析引论", Author="xxx",Price=28.9 },
new Book{ ID=, Title="伯罗奔尼撒战争史", Author="xxx",Price=48.9 }
}; //默认显示英语
public ActionResult Test()
{
ViewBag.Title = App_GlobalResources.Resource1.TitleDisplay;
ViewBag.Author = App_GlobalResources.Resource1.AuthorDisplay;
ViewBag.Price = App_GlobalResources.Resource1.PriceDisplay;
ViewBag.ID = App_GlobalResources.Resource1.IDDisplay;
ViewBag.Action = App_GlobalResources.Resource1.ActionDisplay;
return View(books);
} //语言切换
public ActionResult ChangeLanguage(string language)
{
Session["CurrentLanguage"] = new System.Globalization.CultureInfo(language);
return Redirect("Test");
}
}
在Global文件中创建Application_AcquireRequestState事件
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
System.Globalization.CultureInfo ci = (System.Globalization.CultureInfo)this.Session["CurrentLanguage"];
if (ci == null)
{
ci = new System.Globalization.CultureInfo("en");
this.Session["CurrentLanguage"] = ci;
}
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(ci.Name);
}
}
在客户端读取数据
@model IEnumerable<WebErp.Controllers.Book>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test</title>
<style>
#table-5 th { background:#7F66A0;color: #fff; border-bottom-width: ; }
#table-5 td {color: #000; }
#table-5 tr, #table-5 th{border-width: 1px; border-style: solid; border-color: #7F66A0; }
#table-5 td, #table-5 th{ padding: 5px 10px; font-size: 12px;font-family: Verdana; font-weight: bold; }
</style>
</head>
<body>
@Html.ActionLink("English", "ChangeLanguage", new { language = "en" })
@Html.ActionLink("Chinese", "ChangeLanguage",new { language="zh" })
<table id="table-5" >
<tr>
<th>@ViewBag.ID</th>
<th>
@ViewBag.Title
</th>
<th>
@ViewBag.Author
</th>
<th>
@ViewBag.Price
</th>
<th>@ViewBag.Action</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.ID</td>
<td>@Html.DisplayFor(list => item.Title)</td>
<td>@Html.DisplayFor(list => item.Author)</td>
<td>@Html.DisplayFor(list => item.Price)</td>
<td>@Html.ActionLink("删除","delete?ID="+item.ID)</td>
</tr>
}
</table>
</body>
</html>

用过滤器实现切换多语言效果,参考:https://www.cnblogs.com/zoro-zero/p/6674442.html
ASP.NET MVC - 多国语言的简单实现的更多相关文章
- ASP.NET MVC:多语言的三种技术处理策略
ASP.NET MVC:多语言的三种技术处理策略 背景 本文介绍了多语言的三种技术处理策略,每种策略对应一种场景,这三种场景是: 多语言资源信息只被.NET使用. 多语言资源信息只被Javascrip ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...
- ASP.NET MVC 4 插件化架构简单实现-思路篇
用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC 4 来实现每个插件都可以完全从主站点剥离出来,即使只是一个插 ...
- ASP.NET MVC 4 插件化架构简单实现-实例篇
先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...
- asp.net MVC 3多语言方案--再次写, 配源码
之前写了一篇asp.net MVC多语言方案,那次其实是为American Express银行开发的.有许多都是刚开始接触,对其也不太熟悉.现在再回过头去看,自己做一个小网站,完全用asp.net m ...
- 使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
步骤: 1. 创建一个asp.net mvc 项目 1.1 项目创建好结构如下 2 通过vs安装EntityFramework框架 install-package entityframework 3. ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6
接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理8
接下来做的是对页面的增删改查与页面与页面按钮之间的联系.先上代码和页面效果 using AuthorDesign.Web.App_Start.Common; using System; using S ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...
随机推荐
- try语句的使用
C语言里try是一个语句或函数.其作用是是抛出错误用. 将有可能产生错误的语句括在一起,放入try语句块.如果在try语句块中发生异常,FlashPlayer会创建一个错误对象,并将该Error对象派 ...
- UI 滑动面板的移动控制
通过拖拽的方式移动面板,在单个界面看到多个视图面板 需要导入UnityEngine.EventSystems; 事件命名空间 进而继承两个重要的接口IBeginDragHandler,IDrag ...
- 给你的手机加上安全保障,请设置SIM卡PIN码
[手机上了锁,为啥还丢钱?专家支招:设置SIM卡PIN码]智能手机一旦丢失,不仅会带来诸多不便,甚至还会造成个人隐私泄露及财产损失. 然而很多人认为,自己已经设置了手机屏锁.支付密码.指纹锁等防御措施 ...
- Constructor >> @Autowired >> @PostConstruct
从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入.所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入是发 ...
- win命令大全
Windows系统:开始--运行--命令大全 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 logoff--- ...
- C# 正则表达式中的顺序环视和逆序环视
环视结构不匹配任何字符,只匹配文本中的特定位置. 顺序环视:从左向右查看文本,尝试匹配子表达式,如果能够匹配则返回匹配成功信息.顺序环视使用「 (?=...) 来标识」,例如「 (?=\d) 」,它表 ...
- nginx配置模板问题404
nginx配置模板问题 一.nginx主配置文件如下 cat /etc/nginx/nginx.conf user nginx; worker_processes ; #error_log logs/ ...
- Java基础之随机生成数字和字母
字母与数字的ASCII码 目 前计算机中用得最广泛的 字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information I ...
- Centos 7最小化安装部署PostgreSQL
安装 sh-4.2# yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-ce ...
- maven构建myeclipse 工程
前提:安装maven完成后 mvn -version查看版本 一,新建WEB 工程 mvn archetype:generate -DgroupId={project-packaging} -Dar ...