避免将虚拟目录添加到 ASP.NET 5 应用程序的路径

Avoid adding virtual directory to path on an ASP.NET 5 application

在 ASP.NET 5 MVC 视图中,我有以下内容:

<header style="background-image: '/assets/poster.jpg')">

文件夹 "assets" 位于 wwwroot 中...

这很好用,但是当我在服务器上的虚拟目录下托管项目时,我需要将虚拟目录名称添加到路径中:

<header style="background-image: '/virtualdirectory/assets/poster.jpg')">

我怎样才能避免这种情况?

有趣的是,这会起作用

<img src='~/assets/poster.jpg'/>

但是,这不会

<div style="width:990px; height:99px; background-image: url('~/assets/poster.jpg')"> </div>

对于您的内联样式,您可以使用 Url.Content 辅助方法来生成应用程序绝对路径。

下面的代码应该可以工作。

<div style="width: 100px; height: 100px; 
            background-image:url('@Url.Content("~/assets/poster.jpg")')"></div>

如果你想在cssclass中,你可以简单地使用相对路径。

.myTest {
    background-image: url('../assets/gravatar.png');
     width:100px;height: 50px;
}

假设您的 css 文件位于 assets 文件夹的同级目录(例如:css)下。