【问题标题】:How to inject a dynamic javascript in to asp .net core razor view如何将动态javascript注入asp .net核心剃须刀视图
【发布时间】:2018-05-25 05:11:09
【问题描述】:

这是我在剃刀视图中的代码。

 @if (ViewBag.CurrentPageId != null)
    {
        var currentPage = wizard.Pages.FirstOrDefault(p => p.PageId == ViewBag.CurrentPageId);
        if (!string.IsNullOrEmpty(currentPage.JavaScript))
        {
            var a = currentPage.JavaScript.ToString();
            <script>alert(a)</script>
        }
    }

脚本以 currentPage.JavaScript 的形式出现在我面前。我想将该脚本添加到我的视图中。但是上面的代码给出了错误:a is not defined

  1. 上面的代码可以修改吗?
  2. 将动态 javascript 注入 asp .net core razor 视图的最佳方法是什么?是 TagHelpers 吗?

请帮忙。

【问题讨论】:

  • 要明确a is not defined 是由javascript 产生的错误?如果是这种情况,那么您没有正确逃脱 a 以被剃须刀“渲染”。只需将其更改为:&lt;script&gt;alert(@a)&lt;/script&gt;
  • 谢谢。是的,它有效。

标签: razor asp.net-core .net-core


【解决方案1】:

为了完整起见,我将把我的评论表达为一个详细的答案。

在使用if, using, for ...(定义代码块的结构)时,在 Razor 中使用 @ 启动 c# 代码行不会将整个块转换为解释的 c# razor。

从问题中可以看出,在这样的块中开始编写标记是绝对可能的。

如果您现在想使用 Razor 代码的变量来呈现到标记中,您仍然必须通过添加 @ 来转义它们,即使您位于“代码块”内。

@if(...)
{
    (...)
    <script>alert(@a)</script>
    (...)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2020-08-09
    • 2021-10-07
    相关资源
    最近更新 更多