如何引用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") 

可以为你工作。

https://stackoverflow.com/a/36157950/2924015

布局与母版页相同。 任何CSS布局的引用,任何子页面将具有。

Scott Gu在这里有一个很好的解释

你可以在Layout.cshtml文件中使用这个结构

 <link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />