3 回答

TA貢獻1797條經驗 獲得超4個贊
布局:
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")" type="text/javascript"></script>
@if (IsSectionDefined("AddToHead"))
{
@RenderSection("AddToHead", required: false)
}
@RenderSection("AddToHeadAnotherWay", required: false)
</head>
視圖:
@model ProjectsExt.Models.DirectoryObject
@section AddToHead{
<link href="@Url.Content("~/Content/Upload.css")" rel="stylesheet" type="text/css" />
}

TA貢獻1840條經驗 獲得超5個贊
遺憾的是,默認情況下無法將其section用作其他用戶建議,因為a section僅可用于a的立即child數(shù)View。
但是,有效的是在每個視圖中實現(xiàn)和重新定義section,這意味著:
section Head
{
@RenderSection("Head", false)
}
這樣,每個視圖都可以實現(xiàn)頭部,而不僅僅是直接子視圖。但是,這僅部分起作用,特別是對于多個部分,麻煩就開始出現(xiàn)了(正如您在問題中提到的)。
因此,真正解決問題的唯一方法是使用ViewBag。最好的可能是CSS和腳本的單獨集合(列表)。為此,您需要確保List在執(zhí)行任何視圖之前初始化了used。然后,您可以在每個視圖/部分視圖的頂部執(zhí)行以下操作(如果Scriptsor Styles值為null,則無需關心:
ViewBag.Scripts.Add("myscript.js");
ViewBag.Styles.Add("mystyle.css");
然后,您可以在布局中循環(huán)瀏覽集合,并根據(jù)中的值添加樣式List。
@foreach (var script in ViewBag.Scripts)
{
<script type="text/javascript" src="@script"></script>
}
@foreach (var style in ViewBag.Styles)
{
<link href="@style" rel="stylesheet" type="text/css" />
}
我認為這很丑陋,但這是唯一可行的方法。
****** UPDATE ****由于它首先開始執(zhí)行內部視圖并逐步處理布局,而CSS樣式是級聯(lián)的,因此通過反向樣式列表可能是有意義的ViewBag.Styles.Reverse()。
這樣,首先添加最外部的樣式,這與CSS樣式表的工作方式一致。
- 3 回答
- 0 關注
- 518 瀏覽
添加回答
舉報