【问题标题】:Special Characters turn to html code C#特殊字符转html代码C#
【发布时间】:2015-04-28 07:37:41
【问题描述】:

在我的网络应用程序中,我从服务器发送了一些字符串,并在我的 JS 中像这样使用它们

var Texts = {
    FillAllFieldsError: '@Texts.FillAllFieldsError',
    PasswordChangeSuccess: '@Texts.PasswordChangeSuccess'
}

来自服务器的字符串有一些特殊字符,如“Ø,Æ”等。它们会变成带有 HTML 代码“forespørsel”的东西。

有人知道怎么解决吗?我使用的是 utf-8 编码

<meta charset="utf-8" />

【问题讨论】:

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


    【解决方案1】:

    使用@Html.Raw() 是正确的方法。

    【讨论】:

    • 默认情况下,ASP Mvc 将始终对任何值进行 HTML 编码。您可以使用 Html.Raw 或将属性值设为 IHtmlString 类型。因此,如果您的 Texts 属性的类型是 IHtmlString 而不是字符串,那么它们也不会被编码。您可以使用 MvcHtmlString.Create(string value) 将任何字符串变成 IHtmlString
    【解决方案2】:

    在您的项目中包含 System.Web 以使用 HttpUtility.HtmlDecode(MSDN) 解码 HTML 编码的字符串。

    【讨论】:

      【解决方案3】:

      我用过这个

      @Html.Raw(Json.Encode(Texts.FillAllFieldsError))
      

      它奏效了。

      【讨论】:

        【解决方案4】:

        这将是您尝试做的最安全的方式:

        var Texts = @Html.Raw(JsonConvert.SerializeObject(new {
           Texts.FillAllFieldsError,
           Texts.PasswordChangeSuccess
        });
        

        ^ 如果您需要指定要包含的属性,请使用匿名对象

        或者使用如下扩展方法:

        using Newtonsoft.Json;
        
        public static class JavascriptExtensions {
           public static IHtmlString AsJavascript<T>(this T value) where T: class{
              return MvcHtmlString.Create(JsonConvert.SerializeObject(value));
           }
        }
        

        那么在你看来你可以这样做:

        var Texts @Texts.AsJavascript();
        

        【讨论】:

          猜你喜欢
          • 2011-04-22
          • 2010-09-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多