Как заставить менеджер пакетов ASP.NET MVC отобразить тег сценария с атрибутом type = "module"? - PullRequest
0 голосов
/ 11 февраля 2019

Когда мы добавляем пакет в коллекцию пакетов 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 для его визуализации таким образом?

Я использую ASP.NET MVC 5.2.4 для .NET Framework версии 4.6.1.

1 Ответ

0 голосов
/ 12 февраля 2019

Я предположил, что у вас установлен последний пакет Microsoft.AspNet.Web.Optimization, поэтому вы можете использовать Scripts.RenderFormat() для добавления атрибута type к сгенерированному тегу <script>:

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

Или вы можете использовать вспомогательный класс, содержащий вспомогательный метод, для визуализации тегов <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")

Ссылка:

Как отобразить пакеты сценариев / стилей в пользовательском формате в ASP.NET MVC?

Проблема, связанная с данной:

Установить тип скрипта в наборе скриптов MVC4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...