你的位置:首页 > 软件开发 > ASP.net > ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发

ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发

发布时间:2016-03-03 00:00:08
说说传统做法的缺点1、做过多语言的都知道这玩意儿太花时间2、多语言架构一般使用资源文件、3、页面的可读性变差,需要和资源文件进行来回切换4、修改麻烦5、样式兼容难调6、JS如何处理 另类做法传统做法看上去高大上实质上唯护起来确实很费力,所以有一部分人就采用了另类做法直接做二套 ...

说说传统做法的缺点

1、做过多语言的都知道这玩意儿太花时间

2、多语言架构一般使用资源文件、

3、页面的可读性变差,需要和资源文件进行来回切换

4、修改麻烦

5、样式兼容难调

6、JS如何处理

 

另类做法

传统做法看上去高大上实质上唯护起来确实很费力,所以有一部分人就采用了另类做法直接做二套页面。总体来说上面一种和下面一种可以说半斤八两。

上面一种显的有点档次,但维护成本并不低,页面可读性差,样式兼容难调,唯一优点是页面代码逻辑只有一套,只在这一点上占了优势。

 

 

另类做法升级版

为了快速开发和易维护性我对另类方法进行了2点升级

 

1、添加视图引擎切换机质动态加载视图引擎

在Gobal Application_Start中添加自定义视图引擎,只看红圈内容

ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发

 

 

BestViewEngine具体内容如下:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using Best.WidgetFactory.Cache;using SyntacticSugar;namespace Best.Site.Models{  /// <summary>  /// 自定义MVC视图引擎  /// </summary>  public sealed class BestViewEngine : RazorViewEngine  {    public BestViewEngine()    {    }    /// <summary>    /// 重写FindView    /// </summary>    /// <param name="controllerContext"></param>    /// <param name="viewName"></param>    /// <param name="masterName"></param>    /// <param name="useCache"></param>    /// <returns></returns>    public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)    {      var key ="languageKey";//COOKIE KEY      var cm = CookiesManager<string>.GetInstance();      if (cm.ContainsKey(key))//验证多语言COOKIE是否有值      {        var cacheVal = cm[key]; //获取多语言后缀 (例如: en)        if (cacheVal.IsValuable())          viewName += "_{0}".ToFormat(cm[key]);//将原视图名添加后缀  比如 index 添加后缀之后就是 index_en      }      return base.FindView(controllerContext, viewName, masterName, useCache);//参数处理后调用BASE的FindView方法    }  }}

原标题:ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。