如何在mvc4中的特定视图中添加单个css文件?

时间:2012-09-19 10:43:36

标签: asp.net-mvc asp.net-mvc-4 razor

实际上我有一个母版页,我将这个母版页添加到另一个视图(Index.cshtml),现在我想在Index.cshtml视图中添加另一个单独的css文件。

3 个答案:

答案 0 :(得分:24)

在母版页的head部分(例如_Layout.cshtml)中添加一个RenderSection调用。您的标题部分可能如下所示:

<head>
    <meta charset="utf-8" />
    <meta name="description" content="The content description" />
    <link rel="shortcut icon" href="@Url.Content("~/Content/images/favicon.ico")" />
    <title>@ViewBag.Title</title>
    @RenderSection("css", false)
</head>

然后在你的Index.cshtml中使用该部分添加你的css链接:

@section css {
    <link href="@Url.Content("~/css/style.css")" rel="stylesheet"/>
}

请注意,“css”是您的部分的唯一名称,需要匹配。您也可以在任何所需的视图中使用此部分。您在css部分中指定的部分将在html的head-tag中呈现,就像您将RenderSection占位符放在_Layout.cshtml中一样。

答案 1 :(得分:1)

糟糕的做法但你可以只在视图的顶部添加一个html链接标记或脚本标记,现代浏览器仍会渲染它。它并不总是需要位于母版页的头部

答案 2 :(得分:0)

您可以使用Razor sections或字符串集合并将其存储在ViewBag.CSS中,稍后在布局上呈现它,或者如果您不熟悉剃刀,则可以使用javascript

var $ = document; // shortcut
var cssId = 'myCss';  // you could encode the css path itself to generate id..
if (!$.getElementById(cssId))
{
    var head  = $.getElementsByTagName('head')[0];
    var link  = $.createElement('link');
    link.id   = cssId;
    link.rel  = 'stylesheet';
    link.type = 'text/css';
    link.href = 'http://website.com/css/stylesheet.css';
    link.media = 'all';
    head.appendChild(link);
}