【问题标题】:relative path in stylesheets within asp.net mvc areasasp.net mvc 区域内样式表中的相对路径
【发布时间】:2011-11-30 23:57:32
【问题描述】:

我有一个具有当前结构的项目

My Project
  /Content
  /Controller
  /View
  /Model
  /Areas
     /Area1
        /View
        /Controller
        /Model
     /Area2
        /View
        /Controller
        /Model

所有区域视图都使用根共享 _Layout 视图,该视图引用根目录下的 css 文件。 content文件夹下的css文件引用了同目录下的图片或其他内容,如下:

.box-shadow
{
    -webkit-box-shadow: 0px 5px 80px #505050;
    -moz-box-shadow: 0px 5px 80px #505050;
    box-shadow: 0px 5px 80px #505050;
    behavior: url('../Content/PIE.htc');
}

当我访问“http://MyProject/controller/action”时,所有这些都可以正常工作,但是当我进入“http://root/area/controller/action”区域时,我的 css 文件无法找到路径'../Content/PIE.htc'。

我不知道如何解决这个问题,所以我想知道是否有人知道解决这个问题的方法。

谢谢!

【问题讨论】:

  • .htc?这不是一些 IE 特定的废话,其中有一个错误,而不是相对于它使用的相对于当前 url 的 CSS 路径的当前位置?
  • 你试过没有“../”。如果您的 css 文件位于 Content-Folder 中,则不应使用“../”。
  • 是的,这就是它正在做的事情@DarinDimitrov
  • 我两种方式都试过了@Tobias

标签: css asp.net-mvc-3 razor relative-path areas


【解决方案1】:

如果所有区域中的所有视图都使用root共享_Layout(~/Views/Shared/_Layout.cshtml),请确保_Layout.cshtml调用css文件,如下代码:

<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />

我用 MVC 3 对其进行了测试,它可以工作。

【讨论】:

  • 问题出在 css 中引用的文件路径。我可以正确获取css文件的路径。
【解决方案2】:

有两个有用的 SO 帖子:css3pie in MVC, where to place the pie.htc file? 和 where do I put the PIE.htc file (for making IE work with CSS3) when I'm using cakephp,PIE 网站也有一个 discussion about it:

IE 将行为属性的 URL 解释为相对于源 HTML 文档,而不是像其他所有 CSS 属性一样相对于 CSS 文件。这使得调用 PIE 行为很不方便,因为 URL 必须是:

绝对来自域根目录——这使得 CSS 不容易在目录之间移动

相对于 HTML 文档——这使得 CSS 不容易在不同的 HTML 文件之间重用。

到目前为止,我最好的想法是在站点范围内有一个 css 目录,用于放置 PIE.htc 文件,并使用绝对路径。不是很好,但也不是很糟糕。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2010-12-09
    • 2018-05-31
    相关资源
    最近更新 更多