如何获取ASP.NET MVC包管理器以呈现具有type =“ module”属性的脚本标记?

时间:2019-02-11 17:22:59

标签: javascript asp.net-mvc

当我们像这样将捆绑包添加到ASP.NET MVC捆绑包集合中时:

public static RegisterBundles(BundleCollection bundles)
{

  bundles.Add( new ScriptBundle("~/bundle/foo")
               .Include("~/Scripts/foo.js"));
}

并在这样的视图中渲染它:

@Scripts.Render("~/bundle/foo")

它像常规的JavaScript文件包含<script>一样呈现:

<script src = "/Scripts/foo.js"></script>

但是我的 foo.js 是ES 6模块,因此我希望像这样加载它:

<script src = "/Scripts/foo.js" type = "module"></script>

简短地键入自己标记的<script>,我实际上如何获得ASP.NET MVC包类以这种方式呈现它?

我正在使用针对.NET Framework版本4.6.1的ASP.NET MVC 5.2.4。

1 个答案:

答案 0 :(得分:1)

我假设您安装了最新的Microsoft.AspNet.Web.Optimization软件包,因此可以使用Scripts.RenderFormat()在生成的type标签上添加<script>属性:

@Scripts.RenderFormat("<script src='{0}' type='module'></script>", "~/bundle/foo")

或者您可以利用包含helper方法的helper类来渲染<script>标签,这些标签具有某些捆绑包的附加属性:

public static class ScriptHelpers
{
    public static IHtmlString RenderWithTypeAttribute(params string[] paths)
    {
        return System.Web.Optimization.Scripts.RenderFormat(@"<script src=""{0}"" type=""module""></script>", paths);
    }
}

然后在Razor视图页面中使用它,如下所示:

@ScriptHelpers.RenderWithTypeAttribute("~/bundle/foo")

参考:

How to render Scripts/Styles bundles in the custom format in ASP.NET MVC?

相关问题:

Set Script Type in MVC4 Script Bundle