我发现了一些与此相关的问题,但通常会有很多不同的答案,它们看起来都非常混乱和复杂。
如果这是需要做的事情,那么我最好坐下来解决它。
我想知道从部分视图向头部添加内容的最简单,最有效的方法。
我需要这样做的原因是我需要在每个页面上使用某些java脚本和jquery,并且它在页面之间有所不同。我不想只在_layout视图中添加它们。
答案 0 :(得分:14)
您可以使用部分执行此操作。例如: 我有两个以上的视图,彼此有相同的_Layout.My公司控制器中的索引操作有以下部分:
@model Invoice.Model.HelperClasses.CompanyViewModel
@{
ViewBag.Title = "Companies";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section usage{
<link href="~/css/uniform.default.css" rel="stylesheet" />
}
@section other{
<link href="~/css/datepicker.css" rel="stylesheet" />
<link href="~/css/SimpleSlide.css" rel="stylesheet" />
<link href="~/css/responsive-tables.css" rel="stylesheet" />
}
@section script
{
<script src="~/js/datepicker/bootstrap-datepicker.js"></script>
}
和Invoice控制器中的显示操作具有相同的部分,但不同的css和js如下:
@model Invoice.Model.HelperClasses.InvoiceViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section usage{
@*<link href="~/css/uniform.default.css" rel="stylesheet" />*@
}
@section other{
<link href="~/css/DT_bootstrap.css" rel="stylesheet" />
<link href="~/css/responsive-tables.css" rel="stylesheet" />
<script src="~/js/datatables/extras/ZeroClipboard.js"></script>
}
@section script
{
<script src="~/js/datepicker/bootstrap-datepicker.js"></script>
<script src="~/js/validate/jquery.metadata.js"></script>
<script src="~/js/validate/jquery.validate.js"></script>
}
然后您可以在_Layout中使用此部分,但其必需参数应为false。看看:
<!DOCTYPE html>
<html>
<head>
<!--usage-->
@RenderSection("usage", required: false)
<!--other-->
@RenderSection("other", required: false)
<!--script-->
@RenderSection("script", required: false)
<head>
<body>
</body>
</html>
答案 1 :(得分:1)
在_Layout.cshtml页面(或任何其他母版页)上使用<head></head>
标记内的以下代码。
@if (IsSectionDefined("SpecialOther"))
{
@RenderSection("SpecialOther")
}
在您需要特殊css,脚本或任何其他项目的页面上,指定其引用。如,
@section SpecialOther{
<link href="~/css/responsive-tables.css" rel="stylesheet" />
<script src="~/js/datatables/extras/ZeroClipboard.js"></script>
}