滥用HTML.Raw

时间:2018-02-15 10:12:23

标签: c# html asp.net-mvc razor

在当前的ASP.NET MVC项目中,我正在工作,我必须在我的视图和服务器中管理本地化字符串。

而不是创建特定于语言的资源,本地化的字符串存储在数据库中。

只要需要本地化字符串,就会执行对数据库的调用。

在我的.cshtml页面中,我需要显示这些字符串。

在编码时,资源仅针对一种语言(IT),但将来可能会指定其他语言。

特定语言的字符串可能包含可能错误地打印到编码用户的保留HTML实体。

克服这个问题 我想在@Html.Raw()帮助器中包装Javascript中使用的每个字符串,即使它可能没有必要。

例如:@(Html.Raw(localizationService.GetMessage("Success.General"))

这有效,但我觉得我在滥用Html.Raw()方法。

我怀疑是完全没有意义还是我可以改进我的解决方案?

1 个答案:

答案 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");