我知道如何在 _Layout.cshtml 文件中设置 .css 文件,但如何在每个视图上应用样式表呢?
我的想法是,在 _Layout.cshtml 中,您可以使用 <head>
标签,但在非布局视图中就没有这样的标签。那么 <link>
标签放在哪里呢?
我知道如何在 _Layout.cshtml 文件中设置 .css 文件,但如何在每个视图上应用样式表呢?
我的想法是,在 _Layout.cshtml 中,您可以使用 <head>
标签,但在非布局视图中就没有这样的标签。那么 <link>
标签放在哪里呢?
对于在整个站点中被重复使用的 CSS 样式,我会将它们定义在_Layout
的<head>
部分:
<head>
<link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
@RenderSection("Styles", false)
</head>
如果我需要一些特定于视图的样式,我会在每个视图中定义 Styles
部分:
@section Styles {
<link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}
编辑:值得注意的是,@RenderSection中的第二个参数false表示该部分在使用此母板页的视图上并非必需,而视图引擎会快乐地忽略没有在您的视图中定义“Styles”部分的事实。如果为true,则除非已定义“Styles”部分,否则视图将无法呈现并将抛出错误。
我尝试添加一个代码块,像这样:
@section styles{
<link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}
另外在 _Layout.cshtml 文件中有一个相应的区块:
<head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>
这个方法是可行的!但我觉得可能有更好的方法。更新:在@RenderSection
语句中添加“false”,这样当你没有添加一个名为head
的@section
时,你的视图就不会出问题。
@RenderSection()
中添加了 false 参数。很好发现。 - MrBoJangles使用
@Scripts.Render("~/scripts/myScript.js")
或者@Styles.Render("~/styles/myStylesheet.css")
可能适合您的工作。
布局与主页面的工作方式相同。布局引用的任何CSS,子页面都会有。
Html.RequireCss("yourfile", 9999); // 9999 is loading priority
<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />
<link>
也可用于除样式表之外的其他内容(如预取下一页、网站图标),因此 rel="stylesheet"
告诉浏览器所引用的文件是一个样式表。 - jao
RenderSection
的地方(惊讶吧 :)),而不是在头部的末尾。 - David Ferenczy Rogožan