ASP.NET MVC数据库本地化

The*_*eek 6 asp.net-mvc dependency-injection localization

我正在开发一个多语言的企业网站,我想将本地化存储在数据库中.

我已经阅读了以下非常好的文章,但我个人认为这是一个开销,我可以轻松实现同样的目标:

扩展ASP.NET 2.0资源提供者模型

我已经设置了一些基础,但我不确定我的方法是否正常.基本上我已经创建了一个与DI寄存器的服务.

public interface ILocalizedStringProvider
{
    string GetLocalizedString(string key);

    string GetLocalizedString(string key, string deafultValue);
}
Run Code Online (Sandbox Code Playgroud)

我也创建了一个像这样的Html帮助器

public static MvcHtmlString LocalizedString(this HtmlHelper helper, string key, string defaultValue)
    {            
        if (string.IsNullOrEmpty(defaultValue)) return new MvcHtmlString("");
        if (string.IsNullOrEmpty(key)) return new MvcHtmlString(defaultValue);

        ILocalizedStringProvider localizedStringProvider = DependencyResolver.Current.GetService<ILocalizedStringProvider>();

        if (localizedStringProvider == null)
        {
            return MvcHtmlString.Create(defaultValue);
        }

        string val = localizedStringProvider.GetLocalizedString(key, defaultValue);

        if (string.IsNullOrEmpty(val))
        {
            return MvcHtmlString.Create(defaultValue);
        }

        return MvcHtmlString.Create(val);
    }
Run Code Online (Sandbox Code Playgroud)

然后只需从视图中调用帮助程序.

首先,我想知道这种方法是否良好,如果不是反模式.

其次我关注的是这一行:

ILocalizedStringProvider localizedStringProvider = DependencyResolver.Current.GetService<ILocalizedStringProvider>();
Run Code Online (Sandbox Code Playgroud)

使用构造函数注入来解析控制器中的服务ILocalizedStringProvider是否更好?让控制器使用本地化填充ViewBag?

谢谢!

jga*_*fin 2

您可以使用我的 Griffin.MvcContrib 项目。它包含一个现成的 MS SqlServer 实现,用于在数据库中存储本地化信息。

简介:http ://www.codeproject.com/Articles/352583/Localization-in-ASP-NET-MVC-with-Griffin-MvcContri

行政

还有一个管理区域可用于管理本地化:

在此输入图像描述

SQL 服务器设置

https://github.com/jgauffin/griffin.mvccontrib/wiki/SqlServer

源代码

该项目可在 github 上找到:https://github.com/jgauffin/griffin.mvccontrib