Given MVC3 and Razor engine, I got
_MasterLayout.cshtml
@RenderSection("JavaScript", required: false)
..
..
@RenderBody()
..
View.cshtml with _MasterLayout.cshtml defined in _ViewStart.cshtml
..
@Html.RenderAction("PartialView", "PartialController")
..
PartialView.cshtml
..
@section JavaScript
{
........
}
..
How can I make sure that JavaScript from Partial View ends up in the Master Layout section?
Edit
The above scenario doesn't work because the partial view doesn't have a master layout defined. View, on the other hand, does have Layout with RenderSection defined. If I move section JavaScript from Partial View to View, Razor knows where to render it to. But, since partial view doesn't have a layout, it doesn't know what to do with section JavaScript and thus doesn't render it anywhere.
I don't believe a Partial View can set sections to be used in the layout page :(
It looks like there are no nice solutions to this - you could include two partials (one for script, one for content):
I created a set of extension methods to render scripts blocks (or anything) from a partial, into the main layout.
Then it can be used like so:
And then rendered in the main layout:
Check out the full article here: A Script-Block Templated Delegate for Inline-Scripts in Razor Partials
This worked for me allowing me to co-locate javascript and html for partial view in same file for ease of readability
In View which uses Partial View called "_MyPartialView.cshtml"
In Partial View file