如何在asp .net核心razor视图中注入动态javascript

时间:2018-05-25 05:11:10

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

这是我在razor视图中的代码。

 @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未定义

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

1 个答案:

答案 0 :(得分:0)

为了完整起见,我将把我的评论表达为一个精心设计的答案。

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

正如在问题中看到的那样,完全可以在这样的块中开始编写Markup。

如果您现在想要使用剃刀代码的变量渲染到标记中,您仍然必须通过添加@来逃避它们,即使您在“代码块”中也是如此。

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