如何引用razor视图上的.css文件?
我知道如何在_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
时,你的视图将不会“拼接”。
运用
@Scripts.Render("~/scripts/myScript.js")
要么
@Styles.Render("~/styles/myStylesheet.css")
可以为你工作。
布局与母版页相同。 任何CSS布局的引用,任何子页面将具有。
Scott Gu在这里有一个很好的解释
你可以在Layout.cshtml文件中使用这个结构
<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />