我知道如何在 _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 表示使用此母版页的视图不需要该部分,并且视图引擎将很高兴地忽略没有定义“样式”部分的事实,这很有用在你看来。如果为 true,除非定义了“样式”部分,否则视图将不会呈现并且会引发错误。
我尝试像这样添加一个块:
@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
时,您的视图不会“爆炸”。
"Head"
。
@RenderSection()
。接得好。
使用
@Scripts.Render("~/scripts/myScript.js")
或者
@Styles.Render("~/styles/myStylesheet.css")
可以为你工作。
https://stackoverflow.com/a/36157950/2924015
布局与母版页的工作方式相同。布局具有的任何 css 引用,任何子页面都将具有。
Scott Gu has an excellent explanation here
我更喜欢使用 Client Dependency dll 中的 razor html helper
Html.RequireCss("yourfile", 9999); // 9999 is loading priority
您可以在 _Layout.cshtml 文件中使用此结构
<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />
<link>
也可以用于样式表以外的东西(即预取下一页、网站图标),因此 rel="stylesheet"
告诉浏览器引用的文件是样式表。
RenderSection
的地方(令人惊讶的是:),而不是在标题的末尾。