如何在视图中将MVC模型字符串作为纯文本

时间:2013-06-14 08:18:58

标签: javascript asp.net-mvc razor html-entities html-encode

我正在将模型发送到具有字符串的视图。这些字符串是html编码的,我不需要它们。有没有html编码将模型发送到视图的方法?

型号:

public class Package
{
    public string String { get; set; }
}

控制器:

public ActionResult GetPackage()
{
    Package oPackage = new Package();
    oPackage.String = "using lots of \" and ' in this string";
    return View(oPackage);
}

查看:

@model Models.Package
<script type="text/javascript">
    (function () {
        // Here @Model.String has lots of &#39; and &quot;
        var String = "@Model.String".replace(/&#39;/g, "'").replace(/&quot;/g, "\"");
        // Here String looks ok because I run the two replace functions. But it is possible to just get the string clean into the view?
    })();
</script>

运行替换函数是一种解决方案,但只是获取没有编码的字符串会很棒。

3 个答案:

答案 0 :(得分:11)

@Html.Raw(yourString)

这应该有效:

@model Models.Package
<script type="text/javascript">
    (function () {
      var String = "@Html.Raw(Model.String)";
})();
</script>

答案 1 :(得分:4)

首先,您需要将字符串转换为Javascript format 然后你需要阻止MVC将其重新编码为HTML(因为它的Javascript,而不是HTML)。

所以你需要的代码是:

@using System.Web

@model Models.Package

<script type="text/javascript">
    var s = "@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.AnyString, addDoubleQuotes: false))";
</script>

答案 2 :(得分:3)

我认为这与我以前的答案不同,我在这里放另一个。 System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true);

@model Models.Package
<script type="text/javascript">
    (function () {
      var String = "@System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true)";
})();
</script>

希望这会有所帮助.. :)