gpt4 book ai didi

javascript - MVC3 Razor 从 HtmlString 中删除脚本标签

转载 作者:行者123 更新时间:2023-11-29 20:14:46 24 4
gpt4 key购买 nike

如果是 ajax 请求,我有一个方法可以将 javascript 添加到部分 View 的末尾。但我的问题是,当返回脚本时,脚本标签已被删除,我要执行的函数是用纯文本编写的。

if (httpContext.Request.IsAjaxRequest())
{
script = "MyNamespace.globals.initFunctions.push(function() { " + script + " });";
return new HtmlString(@"<script type=""text/javascript"">" + script + "</script>");
}

所以,不是得到想要的结果

<script type="text/javascript">MyNamespace.globals.initFunctions.push(function() { MyNamespace.init(); });</script>

我得到 MyNamespace.globals.initFunctions.push(function() { MyNamespace.init(); }); 纯文本。

可能是什么原因?

编辑:

尝试使用 Html.Raw() 没有帮助。虽然脚本字符串确实包含脚本标签,但它们在呈现时仍会被删除。

    @{
string script = ViewUtilities.AddScript("MyNamespace.init();", this.ViewContext.HttpContext);
}

@Html.Raw(script);

编辑 2:

现在我试过在 View 中这样写,

<script type="text/javascript">
MyNamespace.globals.initFunctions.push(function() { MyNamespace.init(); });
</script>

它仍然会删除脚本周围的标签并将其呈现为纯文本。我不知道从这里去哪里......

当我用 Firebug 检查响应时,它看起来不错,但查看 html 时却不是。

最佳答案

HTML 正在被编码,这是通过 ASP.NET MVC 自动神奇地发生的。

使用 @Html.Raw("htmlstring") 应该会在不去除标签的情况下为您提供字符串的原始 HTML 值。

关于javascript - MVC3 Razor 从 HtmlString 中删除脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666810/

24 4 0