8

我正在将模型发送到具有字符串的视图。这些字符串是 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>

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

4

3 回答 3

13
@Html.Raw(yourString)

这应该有效:

@model Models.Package
<script type="text/javascript">
    (function () {
      var String = "@Html.Raw(Model.String)";
})();
</script>
于 2013-06-14T10:27:36.557 回答
4

首先,您需要将字符串转换为Javascript 格式
然后,您需要防止 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>
于 2013-10-06T06:42:50.417 回答
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>

希望这可以帮助.. :)

于 2013-06-17T13:25:30.613 回答