关于asp.net mvc:如何在剃刀视图中引用.css文件?

How to reference a .css file on a razor view?

我知道如何在layout.cshtml文件上设置.css文件,但是在每个视图的基础上应用样式表呢?

我在这里的想法是,在layout.cshtml中,您可以使用标记,但在非布局视图中不能这样做。标签在哪里?


对于在整个站点中重用的CSS,我在_Layout部分中定义了它们:

1
2
3
4
<head>
    <link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
    @RenderSection("Styles", false)
</head>

如果我需要一些视图特定的样式,我在每个视图中定义Styles部分:

1
2
3
@section Styles {
    <link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}

编辑:知道@rendersection中的第二个参数false很有用,这意味着在使用此母版页的视图上不需要该节,视图引擎会很高兴地忽略在视图中没有定义"样式"节这一事实。如果为true,则视图将不会呈现,除非定义了"样式"部分,否则将引发错误。


我尝试添加这样的块:

1
2
3
@section styles{
    <link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}

以及u layout.cshtml文件中的相应块:

1
2
3
4
<head>
@ViewBag.Title
@RenderSection("styles", false);
</head>

有效!但我忍不住觉得有更好的办法。更新:在@RenderSection语句中添加了"false",这样当您忽略添加名为head@section时,您的视图就不会出现splode。


使用

1
@Scripts.Render("~/scripts/myScript.js")

1
@Styles.Render("~/styles/myStylesheet.css")

可以为你工作。

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


布局的工作方式与母版页相同。任何布局具有的CSS引用,任何子页都将具有。

顾司各特有一个很好的解释


我更喜欢使用来自客户端依赖dll的Razor HTML帮助程序

1
Html.RequireCss("yourfile", 9999); // 9999 is loading priority

您可以在layout.cshtml文件中使用此结构

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