样式表中的Url.Content()?

时间:2013-08-22 17:27:02

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

我有一个引用背景图片的CSS类:

#content-wrapper
{
    background: #f7f7f7 url('/Images/bg04.png');
    border-top: solid 1px #fff;
    padding: 45px 0 45px 0;
}

我一直在使用MVC4和Razor一段时间了,我已经习惯使用@Url.Content()链接到图像,其他页面以及网站上提供的文档。

但是,在.cshtml页面之外,它看起来并不像这个特定帮助(或任何真正的帮助)。

我的问题

有没有办法在样式表上“启用”@Url.Content()

3 个答案:

答案 0 :(得分:3)

不容易,我还没有遇到需要它的情况,因为路径是相对于样式表(不是页面,可能会改变)。虽然您不应使用像url('/Images/bg04.png')这样的绝对路径,而应使用相对网址,例如url('../Images/bg04.png')

因此,如果您将CSS存储在~/content中且图片位于~/images,那么样式表中的所有路径都应以../images/开头

答案 1 :(得分:2)

我在MVC5 Razor <head>'s <style type="text/css">元素内部使用@ Url.Content()没有问题:

  

background:url('@ Url.Content(“〜/ Content / Images / logo-bg.jpg”)')no-repeat scroll 0 0;

答案 2 :(得分:0)

我遇到了这个,它帮助了我

<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中一样。