在当前的ASP.NET MVC项目中,我正在工作,我必须在我的视图和服务器中管理本地化字符串。
而不是创建特定于语言的资源,本地化的字符串存储在数据库中。
只要需要本地化字符串,就会执行对数据库的调用。
在我的.cshtml页面中,我需要显示这些字符串。
在编码时,资源仅针对一种语言(IT),但将来可能会指定其他语言。
特定语言的字符串可能包含可能错误地打印到编码用户的保留HTML实体。
克服这个问题 我想在@Html.Raw()帮助器中包装Javascript中使用的每个字符串,即使它可能没有必要。
例如:@(Html.Raw(localizationService.GetMessage("Success.General"))
这有效,但我觉得我在滥用Html.Raw()方法。
我怀疑是完全没有意义还是我可以改进我的解决方案?
答案 0 :(得分:2)
您可以使用简单的静态方法。那么如果你需要在全球范围内改变一切,你就不必处理无限的Html.Raw条目:
public static class Localization
{
private class HtmlString : IHtmlString
{
private string Value;
public HtmlString(string value)
{
Value = value;
}
public string ToHtmlString()
{
return Value;
}
}
public static IHtmlString Message(string key)
{
return new HtmlString(localizationService.GetMessage(key));
}
}
用法:
@Localization.Message("Success.General");