You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Umbraco CMS添加脚本时自动生成的多余斜杠

解决Umbraco中内联脚本自动生成多余斜杠的问题

嘿,这个问题我太熟悉了!Umbraco用的Razor视图引擎默认会对输出的内容做HTML编码,这就是为啥你脚本里的斜杠会被转义成\/这种多余的格式。别担心,有两个简单的办法可以解决:

方法1:用Html.Raw()绕过自动编码

Razor的自动编码是为了安全,但对于你自己写的内联脚本来说,我们可以明确告诉它这段内容不需要编码。修改你的代码如下:

@inherits Umbraco.Web.Macros.PartialViewMacroPage
@Html.Raw(@"
<script>
    $(document).ready(function() {
        if ($(""html"").attr(""lang"") == ""ar-AE"") {
            $("".globe"").attr('href', '/about-us/');
        } else {
            $("".globe"").attr('href', '/من-نحن/');
        }
    });
</script>
")

这里用了C#的逐字字符串(@开头的字符串),避免了引号转义的麻烦,同时Html.Raw()会直接输出内容,不会对斜杠、引号这些字符进行编码。

方法2:把脚本移到单独的JS文件(推荐)

如果项目允许,更规范的做法是把这段逻辑抽离到独立的JavaScript文件中,比如lang-switch.js,然后在视图里引用它:

@inherits Umbraco.Web.Macros.PartialViewMacroPage
<script src="/scripts/lang-switch.js"></script>

在lang-switch.js里写你的逻辑:

$(document).ready(function() {
    if ($("html").attr("lang") == "ar-AE") {
        $(".globe").attr('href', '/about-us/');
    } else {
        $(".globe").attr('href', '/من-نحن/');
    }
});

这种方式不仅避免了编码问题,还让代码更易维护、更符合前端最佳实践,也方便后续复用这段逻辑。

为什么会出现这个问题?

Umbraco的Razor视图默认会对所有输出的内容进行HTML编码,目的是防止XSS攻击。但这会把像/、"这类字符转义成HTML实体,导致你的脚本URL里出现多余的斜杠。用Html.Raw()或者外部JS文件,就能绕过这个自动编码的行为。

内容的提问来源于stack exchange,提问作者Guruprakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:34:17