我尝试这样做的主要动机是将仅在页面底部的部分所需的JavaScript与其余JavaScript放在一起,而不是在呈现该部分的页面中间。
以下是我所尝试做的简化示例:
这里是一个布局,其中在body之前有一个Scripts节。
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>
<body>
@RenderBody()
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
@RenderSection("Scripts", false)
</body>
</html>
以下是使用这个布局的示例视图。
<h2>This is the view</h2>
@{Html.RenderPartial("_Partial");}
@section Scripts {
<script type="text/javascript">
alert("I'm a view.");
</script>
}
这里是从视图中呈现的部分。
<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>
}
在这个例子中,在视图中指定的标记被放置在部分中,但来自部分的标记没有。是否有可能使用Razor从部分视图填充部分?如果不能,有什么其他方法可以在页面底部只包含部分所需的JavaScript而不是全局包含它?