Добавление в пакет script частичного представления в .NET MVC 5

Мы создаем web-решение .Net MVC, которое будет использовать виджеты, представленные как HTML.Partials(). Мы хотели бы, чтобы частичный вид добавлял свои зависимости в теги сценариев главной страницы, как css файлы, так и файлы javascript.

Я пытаюсь с этим кодом в частичном. Но js файл не отображается в разделе макета моей страницы. Что не так?

@{

    var bundle = System.Web.Optimization.BundleTable.Bundles.GetRegisteredBundles()
        .Where(b => b.Path == "~/bundles/jquery")
        .First();

    bundle.Include("~/Scripts/addtojquerybundletest.js");
}

Ответ 1

Это просто похоже на мой пакет jquery. Теперь он работает, я добавил набор виджета, в котором вы можете добавлять сценарии для рендеринга в основной макет. Пакет также обрабатывает добавление одного и того же файла несколько раз (что может произойти, если один и тот же виджет существует несколько раз на одной странице) и только один раз отображает его. Мое решение добавлено ниже, что, похоже, не так хорошо документировано из поисковых запросов Ive, сделанных до сих пор.

В BundleConfig.cs:

bundles.Add(new ScriptBundle("~/widgetspecific"));

В _Layout.cshmtl:

@Scripts.Render("~/widgetspecific")

В Widget.cshtml:

@{
    var bundle = System.Web.Optimization.BundleTable.Bundles.GetBundleFor("~/widgetspecific");

    bundle.Include("~/Scripts/andreas.js");
}

Кто-нибудь знает об отрицательных аспектах этого решения?

Ответ 2

@The Kaizer, для вашего ответа выше. В Widget.cshtml вы можете использовать

var bundle = System.Web.Optimization.BundleTable.Bundles.GetBundleFor("~/widgetspecific");

Ответ 3

Вам нужно будет создать новый пакет для каждого виджета, иначе, если вы повторно используете пакет "~/widgetspecific", он будет продолжать добавлять скрипты из виджета предыдущей страницы при навигации по вашему сайту.