My main motivation for trying to do this is to get Javascript that is only required by a partial at the bottom of the page with the rest of the Javascript and not in the middle of the page where the partial is rendered.
Here's a simplified example of what I'm trying to do:
Here is the layout with a Scripts section right before the body.
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link [email protected](~/Content/Site.css) rel=stylesheet type=text/css />
</head>
<body>
@RenderBody()
<script [email protected](~/Scripts/jquery-1.4.4.min.js) type=text/javascript></script>
@RenderSection(Scripts, false)
</body>
</html>
Here's an example view using this layout.
<h2>This is the view</h2>
@{Html.RenderPartial(_Partial);}
@section Scripts {
<script type=text/javascript>
alert(I'm a view.);
</script>
}
And here's the partial being rendered from the view.
<p>This is the partial.</p>
@* this never makes it into the rendered page *@
@section Scripts {
<script type=text/javascript>
alert(I'm a partial.);
</script>
}
In this example, the markup specified in the view is placed into the section, but the markup from the partial is not. Is it possible to populate a section from a partial view with Razor? If not, what are some other methods of getting Javascript that's only needed by partials at the bottom of the page without including it globally?