发送到javascript的字符串中的文本编码错误

use*_*884 5 javascript asp.net-mvc-3

我有一个接收UTF-8编码字符串(ViewBag.errorText)的javascript方法,并将其用作新函数的参数.

问题是显示的文本显示的show_error_dialog是html转义字符(æ&#248etc')而不是预期的字符("æåø"等).

我认为问题是封闭的<text>标签,但似乎无法解决这个问题.

<script type="text/javascript" charset="utf-8">
    function performLoadOperations() {
        @if(ViewBag.errorText!= null) {
            <text>show_error_dialog('@ViewBag.errorText');</text>
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Zru*_*uty 12

我认为所有插入Razor的文本都是默认的HTML编码.使用Html.Raw()通过字符串未编码.

<script type="text/javascript" charset="utf-8">
    function performLoadOperations() {
        @if(ViewBag.errorText!= null) {
            <text>show_error_dialog('@Html.Raw(ViewBag.errorText)');</text>
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 这会让你面临 XSS 漏洞,你需要重新编码 errorText 才能插入 javascript。 (3认同)

Luc*_*Fox 5

使用:@Html.Raw(Ajax.JavaScriptStringEncode(Model))

安全地将值插入 javascript