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