我知道如何在_Layout.cshtml文件上设置.css文件,但是如何基于每个视图应用样式表呢?
我的想法是,在_Layout.cshtml中,您可以使用<head>
标记,但在一个非布局视图中却没有。哪里的<link>
标签去?
我知道如何在_Layout.cshtml文件上设置.css文件,但是如何基于每个视图应用样式表呢?
我的想法是,在_Layout.cshtml中,您可以使用<head>
标记,但在一个非布局视图中却没有。哪里的<link>
标签去?
Answers:
对于在整个站点中重用的CSS,我在以下<head>
部分中定义它们_Layout
:
<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,则除非定义了“样式”部分,否则视图将不会呈现,并且将引发错误。
RenderSection
(令人惊讶的是:),而不是标题的末尾。
我试图添加一个像这样的块:
@section styles{
<link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}
_Layout.cshtml文件中的相应块:
<head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>
哪个有效!但是我不禁想到有更好的方法。更新:在@RenderSection
语句中添加了“ false”,因此当您忽略添加@section
被调用时,您的视图将不会被继承head
。
"Head"
。
@RenderSection()
。接得好。
使用
@Scripts.Render("~/scripts/myScript.js")
要么
@Styles.Render("~/styles/myStylesheet.css")
可以为您工作。
您可以在Layout.cshtml文件中使用此结构
<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />