【问题标题】:Virtual Directory IIS and MVC虚拟目录 IIS 和 MVC
【发布时间】:2013-06-24 20:43:07
【问题描述】:

这可能是一种快速解决方法,但我似乎找不到答案。我向我的站点 (MVC 4) 添加了一个虚拟目录,并将其设置为作为自己的应用程序运行。但是,图像文件都试图从站点的根目录访问,而不是虚拟目录。我已经更改了 CSS 文件中的路径,但这似乎并没有解决问题。与@Url.Content("~")相比,我真的必须硬编码所有文件的绝对路径吗?

【问题讨论】:

  • 在应用程序中创建虚拟目录有什么特别的原因吗?
  • 不,它是网站内的虚拟目录。基本上,主站点是一个网络开发公司站点,目录是单个客户的开发,因此他们可以查看进度。

标签: asp.net-mvc-4 iis-7 virtual-directory


【解决方案1】:

从 CSS 中引用图片

使样式表中的路径相对于样式表的位置。

因此,如果您的样式表位于 Content\Site.css 中,并且您想引用 Images 中的图像,请使用 Site.css 中的路径 '../Images/<filename>'。这样,无论您的应用从哪个虚拟目录提供服务,路径都是正确的。

换句话说,要将myimage.png 用作背景图像,您可以在Site.css 中添加类似这样的内容:

#mydiv { background-image: url('../Images/myimage.png'); }

从 Razor 视图中引用图像

当从 razor 视图引用静态图像时,使用 @Url.Content("~/pathtofile") 方法,或者更好的是使用 T4MVC(请参阅该页面上的第 2.4 节)。

希望这会有所帮助。

【讨论】:

  • 澄清一下,我的 url 引用应该指向虚拟目录中的内容,但它一直在主站点中寻找它们。是否有可能像这样对 css 文件的 _Layout 文件引用不正确? @Url.Content("~/style.css")
【解决方案2】:

硬编码是个坏主意。请改用@Url.Content()。

【讨论】:

  • 我已经在 razor 语法中使用了助手,但不是在 css 文件中。路径总是想引用主站点,而不是虚拟目录。
  • 奇怪,我的情况与您相同(MVC4 应用程序作为另一个站点内的虚拟应用程序),我没有这个问题。你在使用捆绑包吗?如果您在 .css 中包含一小部分引用外部内容以及如何在视图中包含该 .css,这将很有用。
  • 嗨,我没有使用捆绑包。在我的布局中,我对 css 有以下引用:
  • 在视图中,它们通过类在样式表本身中被引用,并且都指向例如“../images”。我也试过“/images”...
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 2010-11-29
  • 2017-03-06
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2010-09-29
  • 2010-09-20
相关资源
最近更新 更多