如何在剃刀视图上引用.css文件?

MrB*_*les 180 css asp.net-mvc razor

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

我的想法是,在_Layout.cshtml中,你有<head>标签可以使用,但在你的一个非布局视图中却没有.哪里的<link>标签去?

Dar*_*rov 312

对于在整个站点中重用的CSS,我在以下<head>部分中定义它们_Layout:

<head>
    <link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
    @RenderSection("Styles", false)
</head>
Run Code Online (Sandbox Code Playgroud)

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

@section Styles {
    <link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}
Run Code Online (Sandbox Code Playgroud)

编辑:知道@RenderSection中的第二个参数false是有用的,这意味着在使用该母版页的视图上不需要该部分,并且视图引擎将幸福地忽略没有定义"样式"部分的事实在你看来.如果为true,则视图将不会呈现,并且除非已定义"样式"部分,否则将引发错误.

  • 你知道,第二个想法,那并不是那么糟糕.我认为这只是新的和不同的. (4认同)
  • @Sam,这意味着您的布局中没有定义此类部分. (2认同)

MrB*_*les 20

我试过像这样添加一个块:

@section styles{
    <link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}
Run Code Online (Sandbox Code Playgroud)

和_Layout.cshtml文件中的相应块:

<head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>
Run Code Online (Sandbox Code Playgroud)

哪个有效!但我不禁想到有更好的方法.更新:在@RenderSection语句中添加"false",这样当您忽略添加@section被调用时,您的视图将不会"爆发" head.


Nis*_*aan 11

运用

@Scripts.Render("~/scripts/myScript.js")
Run Code Online (Sandbox Code Playgroud)

要么

@Styles.Render("~/styles/myStylesheet.css")
Run Code Online (Sandbox Code Playgroud)

可以为你工作.

/sf/answers/2531056531/

  • 请不要发布[重复答案]的链接(// meta.stackexchange.com/a/211726/206345).相反,请考虑其他可以帮助未来用户找到所需答案的操作,如链接帖子中所述. (4认同)