Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding to script bundle from partial view in .NET MVC 5

We are making a .Net MVC websolution that is going to be using widgets rendered as HTML.Partials(). We would like to be able for the partial view to add its dependencys in the main page views scripts tags, both css-files as well as javascript files.

Ive been trying with this code in my partial. But the js-file isnt rendered in the layout section of my page. What is wrong?

@{

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

    bundle.Include("~/Scripts/addtojquerybundletest.js");
}
like image 270
Andreas Avatar asked Feb 17 '14 09:02

Andreas


2 Answers

It just seemed to be specific to my jquery bundle. It now works, I have added a widgetspecific bundle where you can add scripts to render in the main layout. The bundle also handles the adding of the same file several times (which can happen if the same widget exists several times on the same page) and only renderes it once. My solution added below, which doesnt seem to be that well documented from the searches Ive done so far.

In BundleConfig.cs:

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

In _Layout.cshmtl:

@Scripts.Render("~/widgetspecific")

In Widget.cshtml:

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

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

Is anyone aware of negative aspects to this solution?

like image 90
Andreas Avatar answered Oct 10 '22 00:10

Andreas


@The Kaizer, For you own answer above. In Widget.cshtml you might want to use

var bundle = System.Web.Optimization.BundleTable.Bundles.GetBundleFor("~/widgetspecific");
like image 44
DigitalFreak Avatar answered Oct 10 '22 00:10

DigitalFreak