2011-02-16 48 views
146

我知道如何在_Layout.cshtml文件中设置.css文件,但是如何在每个视图的基础上应用样式表?如何引用剃须刀视图上的.css文件?

我在这里想到的是,在_Layout.cshtml中,您有<head>标签可以使用,但在您的非布局视图之一中没有。 <link>标签去哪里了?

回答

265

对于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" /> 
} 

编辑:了解@R中的第二个参数很有用enderSection,false表示在使用此母版页的视图上不需要该部分,并且视图引擎会很乐意忽略视图中没有定义“样式”部分的事实。如果为true,则视图将不会呈现,并且除非定义了“样式”部分,否则将抛出错误。

+4

你知道,再次想到,这并不坏。我认为这只是新的和不同的。 – MrBoJangles 2011-02-16 20:25:07

+1

另请参阅http://stackoverflow.com/a/4311876/376366 – 2012-11-12 23:32:08

+0

@section样式 - >表示无法解析节样式,这是什么意思? – Revious 2013-11-07 15:10:32

14

我尝试添加的模块,像这样:

@section styles{ 
    <link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" /> 
} 
在_Layout.cshtml文件

和相应的块:

<head> 
<title>@ViewBag.Title</title> 
@RenderSection("styles", false); 
</head> 

其中一期工程!但我不禁想到还有更好的办法。更新:在@RenderSection声明中添加了“false”,这样当您忽略添加名为的@section时,您的视图将不会“拼接”。

0

您可以在此结构中Layout.cshtml文件

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