Visual Studio中的ASP.NET **项目。
我在_Layout.cshtml文件中包含所有<script>
个文件,其中包括底部的所有外部脚本文件...但同时在所有视图中(例如:AboutUs,ContactUs,Products等)。 。),我在页面底部有与页面相关的脚本。
当我渲染页面时,我收到脚本错误,因为页面脚本在jQuery /其他插件之前运行。
我试图将所有插件脚本放在head部分,但我不认为这是个好主意......
现在我的问题是:
虽然我在每个视图中都有页面级脚本,但如何放置所有视图 在页面级别
<script>
标记之前_Layout.cshtml的外部插件脚本?
呈现代码后的参考图片......
使用下面的_Layout.cshtml
文件..
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>@ViewBag.Title</title>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<link rel="stylesheet" href="@Url.Content("~/Content/ui-bootstrap.css")">
<link rel="stylesheet" href="@Url.Content("~/Content/themes/base/ui-theme.css")">
<link rel="stylesheet" href="@Url.Content("~/Content/master.css")">
</head>
<body>
<header>
<h3>Header 1</h3>
</header>
<div id="body">
@RenderBody()
</div>
<footer>
© copyright
</footer>
<script src="@Url.Content("~/Scripts/jquery.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")"></script>
<script src="@Url.Content("~/Scripts/clients-init.js")"></script>
</body>
</html>
和我的AboutUs.cshtml
页面如下......
@{
ViewBag.Title = "About";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<section>
<h2>About us</h2>
<p>Lorem ipsum dolar sit amet...</p>
<div class="showHide hide">Hello World!</div>
</section>
<script>
$(document).ready(function () {
// Page related script
});
</script>
答案 0 :(得分:7)
您可以使用@RenderSection
。
首先修改您的_Layout.cshtml
,使其看起来像下面的代码。请注意,我将@RenderSection
放在所有插件脚本文件之后。
<script src="@Url.Content("~/Scripts/jquery.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")"></script>
<script src="@Url.Content("~/Scripts/clients-init.js")"></script>
@RenderSection("scripts", required: false)
然后,在您的About.cshtml
文件中,您可以使用@section
指令定义一个部分,如下面的代码:
@section Scripts {
<script>
$(document).ready(function () {
// Page related script
});
</script>
}
通过这样做,所有使用Layout.cshml
作为布局的视图都会将其脚本呈现到scripts
部分,并在所有插件脚本之后定义到Layout.cshtml
部分。
要了解有关使用Razor的布局和部分的更多信息,您可以阅读Scott Guthrie的https://bugs.launchpad.net/ubuntu/+source/hdf5/+bug/1418220。