Подтвердить что ты не робот

Как включить script пакет в разделе сценариев в поле зрения

У меня есть макет с разделом @RenderSection("scripts"), и у меня есть пакет, который нужно будет включить в этот раздел для некоторых представлений. Я думал, что просто делать это в представлении будет работать, но это не визуализация скриптов.

@section scripts {
    @Scripts.Render("~/bundles/myBundle")  
}

На мой взгляд, как я могу включить пакет в раздел сценариев?

Разметка

@Scripts.Render("~/bundles/jquery", "~/bundles/scripts")
@RenderSection("scripts", required: false)

Вид

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}
4b9b3361

Ответ 1

Зачем смешивать penderection с комплектом? Если вы решите отказаться от маршрута связывания, вы можете просто поместить свои скрипты в .JS файл, поместите его в свой собственный пакет, если хотите, и назовите этот пакет на вашем представлении. Для примера:

     bundles.Add(new ScriptBundle("~/bundles/myscripts").Include(
                    "~/Scripts/myscript1.js",
                    "~/Scripts/myscript2.js")); 

то просмотр будет иметь следующее:

    @Scripts.Render("~/bundles/myscripts")   

Также убедитесь, что ваш Web.config имеет отладку компиляции, установленную как false:

  <compilation debug="false" />            

он гарантирует, что скрипты будут объединены и проинструктированы.

Обновление

Основываясь на комментариях и моем недавнем опыте, я могу понять, почему мы хотим использовать эти два вместе. Идеальный случай обучения в сообществе!:) Итак, если вы решите вернуться на рефакторинг, я бы удостоверился, что нет опечаток для начала. Если он все еще не работает, сообщите мне, в чем проблема, и я соответствующим образом обновлю ответ. Всем спасибо!

Ответ 2

Попробуйте выполнить указанное ниже решение внутри Вид.

Просмотр

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/movie")"></script>
}

Ответ 3

Я не могу воспроизвести проблему, с которой вы сталкиваетесь

@section scripts {
    @Scripts.Render("~/bundles/movie")  
}

делает штраф без проблем (и соблюдает флаг отладки) я согласен с @Mrchref и пересматриваю ваши пути

с другой стороны, вы можете использовать что-то вроде этого:

public static class Helpers
{
    public static HtmlString StaticContent(this System.Web.Mvc.UrlHelper url, string contentPath)
    {
        return new HtmlString(System.Web.Optimization.Scripts.Render(contentPath).ToString());
    }
}

Использование:

@section Scripts{
    @Url.StaticContent("~/assets/js/jquery")
}

Я бы посоветовал не использовать его как есть, Вам нужно будет найти другое решение для System.Web.Optimization.Scripts.Render(contentPath).ToString(), поскольку оно в основном отображает ту же функцию, которую вы используете (и не работает).

Вы должны поиграть с System.Web.Optimization.BundleTable.Bundles и посмотреть, можете ли вы запросить обе версии, проверить флаг отладки и выполнить правильное содержимое.

Ответ 4

Я считаю, что новая сборка решит вашу проблему. Если это не так, выполните следующие действия:

  • Шаг 1: добавьте это в BundleConfig.cs

    bundles.Add(new ScriptBundle("~/bundles/common").Include("~/Scripts/common.js"));

  • Шаг 2: добавьте эту строку в свой view/layout

    @Scripts.Render("~/bundles/common")

  • Шаг 3: создайте проект и запустите его.