ASP.NET MVC 多语言开发简单案例

首先,新建一个空的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文件中注册此过滤器,如下图所示:

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

 

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中使用NPIO实现导入导出Excel简单操作

本文介绍了在Winform中使用NPOI(PIO项目下的.Net组件)来操作Excel文件&#xff0c;而无需安装Office。 要实现的效果是这样的&#xff1a; 1、导出Excel&#xff1a;根据指定datatable&#xff0c;弹出导出窗口&#xff0c;用户自定义路径、导出名&#xff0c;然后导出。 2、…

3招seo技巧让你把关键词做进百度前三

这个技巧也没有什么&#xff0c;说白了就是个百度点击原理&#xff01;当然&#xff0c;这个标题也就是一个标题党&#xff0c;但是的确能让你的排名靠前&#xff0c;因为我之前测试过&#xff0c;我做过一个词&#xff0c;有10个人&#xff0c;点击一下&#xff0c;隔天就第一…

ASP.NET MVC 中删除无用视图引擎

默认情况下&#xff0c;ASP.NET MVC 同时支持 WebForm 和 Razor 引擎&#xff0c;而我们通常在同一个项目中只用到了一种视图引擎&#xff0c;如Razor&#xff0c;那么我们就移除没有使用的视图引擎&#xff0c;提高View视图的检索效率。在没有删除WebForm引擎之前&#xff0c;…

VRRP在生产环境中的应用

该案例是笔者做过的一个网络改造项目&#xff0c;同时为了保密只介绍VRRP方面的配置以及要注意的事项。 该方案时某医院核心网络&#xff0c;通过两台S8610走VRRP(和网关相连)。网络拓扑如下 S8610_1配置 en config hostname S8610_1 enable sec ******* line vty 0 4 pass ***…

隐藏ASP.NET MVC版本

默认情况下&#xff0c;ASP.NET MVC网站会把版本号提供给浏览器&#xff0c;如下图所示&#xff1a; 只需在Global.asax中添加一句代码即可&#xff1a; MvcHandler.DisableMvcResponseHeader true; 如下图所示&#xff1a; protected void Application_Start(){MvcHandler.…

ASP.NET MVC 使用Log4Net记录系统运行中问题

log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级&#xff0c;以不同的格式&#xff0c;输出到不同的媒介。 在NuGet程序包中下载log4Net组件&#xff0c;如下图所示&#xff1a; 打开Web.config文件&#xff0c;在&…

ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志

在上一篇文章中&#xff0c;实现了利用Log4Net记录系统中出现的问题。如果同时还需要记录用户操作的监控日志&#xff0c;就需要一些修改 修改Web.Cofig配置文件 ,增加一个logger节点和appender节点&#xff0c;用于监控操作日志配置&#xff0c;并且设置不同的日志文件路径&am…

简明python教程 --C++程序员的视角(七):异常

当你的程序中出现某些 异常的 状况的时候&#xff0c;异常就发生了。例如&#xff0c;当你想要读某个文件的时候&#xff0c;而那个文件不存在。或者在程序运行的时候&#xff0c;你不小心把它删除了。上述这些情况可以使用异常来处理。 假如你的程序中有一些无效的语句&#x…

【流媒體】Android 实时视频采集—Camera预览采集

【流媒體】Android 实时视频采集—Cameara预览采集 SkySeraph Mar 26th 2012 SZ Email&#xff1a;skyseraph00163.com 更多精彩请直接访问SkySeraph个人站点&#xff1a;www.skyseraph.com 流媒体系列&#xff1a; http://skyseraph.com/2012/04/11/Media/流媒体专题/ 1 概…

C#中使用SqlBulk百万级数据秒级插入

本文转自这篇文章&#xff0c;提供了一种较快的数据插入的思路&#xff0c;转过来做个记录。 #region static void Insert() {Console.WriteLine("使用Bulk插入的实现方式");Stopwatch sw new Stopwatch();DataTable dt GetTableSchema(); using (SqlConnection …

利用JQuery插件CleverTabs实现多页签打开效果

在VS中&#xff0c;我们能打开多页签&#xff0c;并在不同的页签之间进行浏览和操作&#xff0c;这一功能通过JQuery插件CleverTabs也能实现此效果。CleverTabs下载请点击这里&#xff1a;JQuery CleverTabs 本文采用ASP.NET MVC技术实现效果&#xff1a;要在布局页中点击不同的…

精通ASP.NET MVC ——路由

本文章将关注定义路由&#xff0c;并使用它们去处理URL&#xff0c;使用户能够到达控制器和动作。 文章非常长&#xff0c;可以对路由机制有较初步的了解。首先创建示例项目&#xff0c;项目名为UrlAndRoutes&#xff0c;如下图所示&#xff1a; 然后是创建示例控制器和示例视图…

ASP.NET Web API简单学习

Web API 简介 Web API可以返回 json、xml类型的数据&#xff0c;对于数据的增删改查&#xff0c;提供了对应的资源操作&#xff0c;按照要求的类型进行处理&#xff0c;主要包括&#xff1a;Get&#xff08;查&#xff09;&#xff0c;Post&#xff08;增&#xff09;&#xff…

利用NCO 3.0 调用SAP中的函数

简介 .Net Connector 3.0&#xff0c;简称 Nco3.0。Nco3.0 是 SAP 针对 .net 平台提供的编程接口&#xff0c;由 Nco1.0/Nco2.0 演变而来。如果使用 .net 平台编程&#xff0c;推荐使用 NCo3.0。3.0 版与之前1.0/2.0 版本比较&#xff0c;不管是 API 还是架构&#xff0c;都重新…

char与varchar区别(MYISAM)

Char属于固定长度的字符类型&#xff0c;而varchar属于可变长的字符类型。 下表将各种字符串值保存到char(4)和varchar&#xff08;4&#xff09;列后的结果&#xff0c;说明了char和varchar之间的差别 值 Char(4) 存储需求 Varchar (4) 存储需求 ‘’ ‘ ’ 4字符节…

Win10系统局域网中的其他电脑能Ping通但是无法访问本地IIS发布的网站

局域网中的其他电脑无法访问本地IIS发布的网站&#xff0c;但是能ping通&#xff0c;基本是由于没开放端口的原因。 打开防火墙 —— 高级设置&#xff1a; 点击“入站规则”&#xff0c;然后是“新建规则”&#xff1a; 然后选择“端口” &#xff1a; 选择“TCP”&#xff0c…

C#调试WebService

简单调试 1、首先&#xff0c;新建一个WebService项目用于测试&#xff0c;如下图所示&#xff1a; 2、项目会默认生成一个Hello方法&#xff0c;但是由于Hello方法太简单&#xff0c;添加一个Add方法用于计算两个整数之和&#xff0c;如下图所示&#xff1a; [WebMethod]publ…

ArchLinux学习之环境变量

2019独角兽企业重金招聘Python工程师标准>>> 使得刚修改的环境变量生效&#xff1a;source <带环境变量的文件> 查看环境变量&#xff1a; env 或 set 持久化的环境变量主要存在于这几个文件中&#xff1a; /etc/profile/etc/environment~/.bash_profile~/.b…

精通ASP.NET MVC ——属性路由

在上一篇文章中&#xff0c;有约定路由的介绍。MVC 5中增加了对属性路由这一新技术的支持。在属性路由中&#xff0c;路由是由直接运用于控制器的C#属性定义的。 启动和运用属性路由 默认情况下属性路由是禁止的&#xff0c;通过MapMvcAttributeRoutes扩展方法可以启用它。该…

ASP.NET MVC 阻止通过URL访问服务器上的静态资源文件

背景 在默认情况下&#xff0c;MVC框架是支持对服务器静态资源的访问的&#xff0c;我们在项目根目录下新建一个Content文件夹&#xff0c;然后添加一个命名为“StaticContent.html”的html文件&#xff0c;如下图所示&#xff1a; StaticContent.html中的代码如下图所示&…