ASP.NET MVC5+EF6+EasyUI 后台管理系统(30)-本地化(多语言)

简介:

我们的系统有时要扩展到其他国家,或者地区,需要更多的语言环境,微软提供了一些解决方案,原始我们是用js来控制的,现在不需要了。

我们只要创建简单的资源文件,通过MVC的路由设置就可以轻松的进行语言中的切换。

本节受益于:Asp.net MVC3 高级编程第121页。大家可以自行百度这本书,这应该是国内第一本中文版的MVC3.0教程

现在从项目入手吧(本节也适合其他MVC程序),新建一个语言项目来放资源文件。

一、新建App.Lang,同时新建BaseRes.resx和BaseRes.en.resx或者其他国语言

分别是中文,英文。并引用System.Web类库i

二、处理通讯,配置App.Admin web.config,让这个类生效

在App.Admin中的Core文件夹添加CultureAwareHttpModule文件并继承IHttpModule

  CultureAwareHttpModule

这里必须做个声明:下面2段第一段支持MVC3,第二段支持MVC4

-----------------------MVC3.0

<system.web>

<httpModules>
<add name="CultureAwareHttpModule" type=" App.Admin.CultureAwareHttpModule,App.Admin"/>
</httpModules>
</system.web>

-----------------------MVC4.0 (VS2012 版本配置以下, VS2010的MVC4版本配置同MVC3.0)

<system.webServer>
<modules>
<add name="CultureAwareHttpModule" type="App.Admin.CultureAwareHttpModule,App.Admin"/>
</modules>

</system.webServer>

红色部分在system.web节点内,type包含的是命名空间

三、注册路由

打开RouteConfig.cs,注册为

复制代码
   public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Globalization", // 路由名称
                "{lang}/{controller}/{action}/{id}", // 带有参数的 URL
                new { lang = "zh", controller = "Home", action = "Index", id = UrlParameter.Optional }, // 参数默认值
                new { lang = "^[a-zA-Z]{2}(-[a-zA-Z]{2})?$" }    //参数约束
            );

            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{id}", // 带有参数的 URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
            );

        }
复制代码

路由执行有先后大家都懂的。可以看出最后我们的访问会是这样的

http://localhost:1201/(http://localhost:1201/zh),http://localhost:1201/等

四、将要本地化的项目引用App.Lang

回到Resx文件,打开Resx设置代码为的访问修饰符为public,并添加如下属性,可以看出是键值对应

这里我们以SysSample的index视图为例,回到index上修改如下代码

先引入@using App.Lang;然后修改以下代码

复制代码
<div class="mvctool">
    <input id="txtQuery" type="text" class="searchText" />
    @Html.ToolButton("btnQuery", "icon-search",BaseRes.Query, perm, "Query", true)
    @Html.ToolButton("btnCreate", "icon-add", BaseRes.Create, perm, "Create", true)
    @Html.ToolButton("btnEdit", "icon-edit", BaseRes.Edit, perm, "Edit", true)
    @Html.ToolButton("btnDetails", "icon-details", BaseRes.Details, perm, "Details", true)
    @Html.ToolButton("btnDelete", "icon-remove", BaseRes.Delete, perm, "Delete", true)
    @Html.ToolButton("btnExport", "icon-export", BaseRes.Export, perm, "Export", true)
</div>
复制代码

其中的BaseRes.Query就是国际化属性了

预览一下例子(请注意我的URL地址变化)

 现在你可以本地化您的项目了。最后一个声明,如果你要获取当然选中的是什么语言你必须在页面引用

 CultureInfo info = Thread.CurrentThread.CurrentCulture;

通过info.Name可以获取到URL上选择的zh或en

例: 

src='/@info.Name/SysSample/Create'

结果

src='/en/SysSample/Create'

 本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/3584112.html,如需转载请自行联系原作者

相关文章
|
2月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
37 4
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
41 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
Web App开发 开发框架 .NET
asp.net基于WEB层面的云LIS系统平台源码
结合当今各检验科管理及实验室规模的不同状况,充分吸收当今IT科技的最新成就,开发出以高度产品化、功能强大、极易实施操作、并不断升级换代为主要特点的LIS系统。彻底解决检验科的信息孤岛,全面实现全院信息互通互联、高度共享,并为检验科的规范化管理提供了有力工具。
41 0
|
4月前
|
存储 开发框架 .NET
Asp.Net第一章入门之后台处理程序
Asp.Net第一章入门之后台处理程序
30 0
|
4月前
|
Web App开发 开发框架 .NET
asp.net基于WEB层面的区域云LIS系统平台源码
asp.net基于WEB层面的区域云LIS系统平台源码
49 1
|
4月前
|
存储 开发框架 .NET
【ASP.NET】医学实验室管理(LIS)系统源码
【ASP.NET】医学实验室管理(LIS)系统源码
73 0
|
5月前
|
存储 开发框架 监控
asp.net实验室信息管理LIMS系统源码
系统建立标准及项目库、产品分类库、检验项目库分别管理,并通过检验项目库的灵活应用和配置,用户在无需编程辅助的情况下,可灵活调整承检产品(样品)的分类、子类名称,可有效管理标准方法,可有效管理与标准对应的检验项目。产品(样品)库与标准方法(及检验项目库)可灵活的自由组合。检验项目库可在业务受理、项目检验等环节被方便的调用。
|
前端开发 数据安全/隐私保护
net MVC中的模型绑定、验证以及ModelState
net MVC中的模型绑定、验证以及ModelState 模型绑定 模型绑定应该很容易理解,就是传递过来的数据,创建对应的model并把数据赋予model的属性,这样model的字段就有值了。
1653 0