【问题标题】:Render javascript that stored in database渲染存储在数据库中的 javascript
【发布时间】:2018-05-28 15:45:42
【问题描述】:

我在数据库表中只有一列,它的内容是 javascript 链接,如

<script src="some src"></script> 

或类似的javascript代码

<script>
some code
<script>

所以我的问题是可以在 cshtml 文件中更正该 javascript 的呈现吗?

【问题讨论】:

  • 首先,您需要在您的网络服务器上实际提供some src 文件。第二,你有没有尝试过?
  • @cricket_007 我试过直接包含这样的 Model.JsContent。 Model.JsContent 实际上包含 javascript 链接
  • 您能否编辑您的问题以包含minimal reproducible example
  • 据我了解,您正试图从 .csthml 文件的
  • 这听起来像是一场绝对的安全噩梦......

标签: javascript html asp.net asp.net-mvc umbraco


【解决方案1】:

你可以在你的视图中使用Html.Raw方法

@model YourViewModel
@Html.Raw(Model.YourScriptContent)

假设YourScriptContent 是您在 GET 操作中设置脚本内容值的视图模型的属性。

public ActionResult Index()
{
   var vm = new YourViewModel();
   vm.YourScriptContent =  "<script>alert('testing');</script>";
   return View(vm);
}

默认情况下,Razor 将对任何带有前缀 @ 的 c# 代码/表达式的返回值进行 HTML 编码。但是Raw 方法将返回不是 HTML 编码的标记,这是您在这种情况下所需要的。

由于您在渲染它时不是 HTML 编码,我希望您完全信任脚本内容值 :)。如果您不遵循前面的语句,请阅读脚本注入攻击。

【讨论】:

  • 具体是什么不起作用?这个实现发生了什么?
  • 按原样渲染,但不调用alert函数
  • 检查您的浏览器控制台。我猜你的脚本内容无效
  • 对不起,我忘了说它是为 umbraco crm 准备的
  • 生成页面的来源是什么?
猜你喜欢
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多