我正在开发一个多语言企业网站,希望将本地化信息存储在数据库中。
我已经阅读了以下文章,觉得很好,但我个人认为这是一种负担,我可以更轻松地实现相同的效果: 扩展ASP.NET 2.0资源提供程序模型 我已经建立了一些基础,但不确定我的方法是否正确。基本上,我创建了一个服务并注册到DI中。
我已经阅读了以下文章,觉得很好,但我个人认为这是一种负担,我可以更轻松地实现相同的效果: 扩展ASP.NET 2.0资源提供程序模型 我已经建立了一些基础,但不确定我的方法是否正确。基本上,我创建了一个服务并注册到DI中。
public interface ILocalizedStringProvider
{
string GetLocalizedString(string key);
string GetLocalizedString(string key, string deafultValue);
}
我也创建了一个类似这样的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);
}
然后,视图中只需简单调用该助手。
首先,我想知道这种方法是否好,并且是否不是反模式。
其次,我的担忧在于这一行:
ILocalizedStringProvider localizedStringProvider = DependencyResolver.Current.GetService<ILocalizedStringProvider>();
也许最好使用构造函数注入来解决控制器中的ILocalizedStringProvider服务,并让控制器使用本地化信息填充ViewBag?
谢谢!