首先,新建一个空的MVC项目,增加一个名叫Language的文件夹用于存放资源文件,如下图所示:

在Language文件夹中,增加两个资源文件,分别用于存储中文和英文,如下图所示:

如何添加资源文件?右击Home文件夹,先选择“添加” ,再选择“类”,如下图所示:

然后找到资源文件一栏,点击选择即可,如下图所示:

编辑资源文件,输入对应对应字段对照表,在“访问修饰符”一栏,选择“public”,不然无法在其他地方引用资源文件,如下图所示:

在前端页面增加语言选择功能,并将需要多语言切换的字段用资源文件替换,HTML代码如下:

<div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li>@Html.ActionLink(Language.index, "Index", "Home")</li>@*替换Index*@<li>@Html.ActionLink(Language.about, "About", "Home")</li>@*替换About*@<li>@Html.ActionLink(Language.contact, "Contact", "Home")</li>@*替换Contact*@</ul><ul class="nav navbar-nav navbar-right"><li class="dropdown"><a data-toggle="dropdown" class="dropdown-toggle" href="#"><i class="fa fa-globe fa-lg fa-fw"></i><span>简体中文</span><b class="caret"></b></a><ul role="menu" class="dropdown-menu language-list" style="width:100px;"><li><a href="#" lang="zh-CN">简体中文</a></li><li class="divider"></li><li><a href="#" lang="en">English</a></li></ul></li></ul>
</div>

当用户切换时,触发Action,JS代码如下:

<script type="text/javascript">$(document).ready(function () {//切换语言时设置MVC语言环境、设置语言全局变量$(".language-list a").click(function () {alert("hello")setLanguage($(this).attr("lang"));})function setLanguage(language) {$.ajax({url: "/Home/setGlobalLanguage?lan=" + language,type: "GET",cache: false,success: function () {location.reload();}})}})
</script>

触发Action后将语言设置存入session,Control中的代码如下:

    public class HomeController : Controller{public void setGlobalLanguage(){string language = Request.QueryString["lan"];HttpContext.Session["language_id"] = language;}}

增加过滤器,用于检测和切换多语言的设置,代码如下:

public class LocalizationAttribute: ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext filterContext){string browserLanguage = filterContext.HttpContext.Request.Headers["Accept-Language"].Split(',')[0];if (browserLanguage.ToLower().Contains("en")){browserLanguage = "en";}else if (browserLanguage.ToLower().Contains("cn")){browserLanguage = "zh-CN";}else{browserLanguage = "zh-CN";}string sessionLanguage = filterContext.HttpContext.Session["language_id"] != null ? filterContext.HttpContext.Session["language_id"].ToString() : string.Empty;//如果浏览器语言与session中语言不一致,以session语言为基准,设置语言环境if (browserLanguage != sessionLanguage){string language = string.Empty;//第一次访问,session中无语言全局变量时,用览器语言设置语言环境if (filterContext.HttpContext.Session["language_id"] == null){language = browserLanguage;filterContext.HttpContext.Session["language_id"] = browserLanguage;}//session中有语言全局变量时,用session中语言全局变量设置语言环境else{language = filterContext.HttpContext.Session["language_id"].ToString();}//当前线程的语言采用哪种语言(比如zh,en等)Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);//决定各种数据类型是何组织,如数字与日期Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language);}}}

最后一步,在App_Start的FilterConfig文件中注册此过滤器,如下图所示:

运行程序,默认是中文设置,如下图所示:

点击选择英文,查看是否切换语言成功:

至此为止,一个简单的多语言开发就好了,我还是菜鸟,如果有更好的方法或者建议,请赐教 。

ASP.NET MVC 多语言开发简单案例相关推荐

  1. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...

    程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...

  2. 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发

    日前微软已经发布ASP.NET MVC 2框架RC版,究竟这次RC版本的发布对于WEB开发者带来怎样的改变?以及未来ASP.NET MVC 2正式版还会有哪些改进?带着这样的问题,我们51CTO记者彭 ...

  3. 在ASP.NET MVC应用中开发插件框架(中英对照)

    [原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I'v ...

  4. (转载)ASP.NET MVC多语言切换

    流程图 1.创建语言文件  创建App_GlobalResources文件夹 创建Language文件夹 创建资源文件 这些操作做完后,目录结构应该是以下这样的 我们打开每个资源文件,在里面添加一条T ...

  5. [翻译-ASP.NET MVC]Contact Manager开发之旅迭代3 - 验证表单

    本翻译系列为asp.net mvc官方实例教程.在这个系列中,Stephen Walther将演示如何通过ASP.NET MVC framework结合单元测试.TDD.Ajax.软件设计原则及设计模 ...

  6. Asp.net MVC 多语言问题的解决方案

    上篇文章我们就Asp.net MVC权限问题做了一个较为全面的解决方案,这篇我们就多语言问题进行探讨. 全球化 在IT行业,具有全球化和本地化特性的计算机软件,可以适应不同的语言,地区差异和目标市场的 ...

  7. 【译】使用自定义ViewHelper来简化Asp.net MVC view的开发------part1

    从开发者的角度来看,创建Asp.net MVC的View是一件很爽的事,因为你可以精确控制最终生成的HTML.具有讽刺意味的是不得不写出每一行HTML代码同时也是Asp.net MVC的View中让人 ...

  8. [.NET][ASP.NET MVC 5 网站开发之美]书籍内容介绍及pdf下载

    ASP.NET MVC是微软Web开发平台中最重要的一块拼图,其架构特性更适合用来开发大型的Web应用程序,且ASP.NET MVC的开发方式也越来越受到重视,因此学习MVC已是刻不容缓. 由demo ...

  9. go语言服务器代码,Go语言开发简单web服务器

    欢迎,来自IP地址为:182.103.254.107 的朋友 Go语言由于其方便的并发通信机制以及强大的网络支持,常常被用于服务器软件的开发.本文将示例使用Go语言来开发简单的Web服务器. HTTP ...

最新文章

  1. 欧拉公式cos_谈谈欧拉公式与复指数信号
  2. uva 12545——Bits Equalizer
  3. python编写脚本,删除固定用户下的所有表
  4. 容器编排技术 -- Kubernetes kubectl patch 命令详解
  5. 【WinForm】线程中向listview添加数据
  6. Cilium提供并透明地保护应用程序工作负载之间的网络连接和负载平衡:什么是eBPF和XDP?
  7. ACCESS中执行sql语句
  8. C#关键字operator
  9. ORB SLAM 2 demo 复现
  10. 扫雷——Windows上的经典小游戏
  11. 使用频谱仪测试信号抗干扰实验
  12. 阿里云香港服务器解析后域名无法访问
  13. 根据屏幕大小动态设置字体rem
  14. 读科研经费陷“无底黑洞”有感
  15. qml 应用程序图标设置和打包——qml
  16. 微信机器人网页版接口详解
  17. Web兼容性测试的要点
  18. VIDEO GOOGLE
  19. ERP仓库管理系统需求
  20. 修改d2-admin

热门文章

  1. jenkins+svn+maven+ssh 部署配置详细记录
  2. 工业智能相机与基于PC的机器视觉的区别比较
  3. 专家呼吁建安全漏洞信息共享机制并强化管控
  4. FreeSWITCH第三方库(视频)的简单介绍(二)
  5. CMake入门(二)
  6. Effective C# 原则48:了解更多的工具和资源(译)
  7. matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数
  8. 计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...
  9. label qt 自动换行_QT编写一个登录界面
  10. nextfloat_Java Random nextFloat()方法与示例