【问题标题】:Abusing HTML.Raw滥用 HTML.Raw
【发布时间】:2018-02-16 20:53:55
【问题描述】:

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

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

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

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

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用简单的静态方法。然后,如果您需要全局更改所有内容,则不必处理无限的 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");
    

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      相关资源
      最近更新 更多