我的网站中的图像存在问题。当对图像源使用相对路径时,它在开发中有效,但在部署中无效。所以我实现了下面的代码:
<script>
var baseUrl = "<%= ResolveUrl("~/") %>";
var src = baseUrl + "/images/somegif.gif";
$(".loading").attr("src", src);
</script>
问题是在检查baseUrl的值时,它是“/”。如何使其值为:“http://localhost:[portnumber]/ ”?
不幸的是,由于物流原因,我还无法在已部署的网站上对此进行测试。但我需要它来用于开发和部署。
- 我使用的是 Visual Studio 2015,在 IIS Express 上本地运行
最佳答案
您不需要关心主机和端口,您可以只使用:
var src = '<%= ResolveUrl("~/images/somegif.gif") %>' ;
$(".loading").attr("src", src);
它应该在开发和生产环境中工作。如果您确实需要完整路径,可以使用 Request.Url.Scheme
、Request.Url.Host
和 Request.Url.Port
来构造绝对网址。
基本上,要在 Asp.Net 中指定 Html 元素的路径,您有以下三个选项:
1) 使用Html 格式的绝对路径,例如/images/somegif.gif
。您可以在应用程序的任何部分使用它并且它会起作用。它将与
http://localhost:[port]/images/somegif.gif
和
http://your-production.domain/images/somegif.gif
当 images
文件夹位于网站的根文件夹中时,分别用于 dev 和 prod。但是,当您将页面和图像从一个文件夹移动到另一个文件夹时,这可能会很不方便。那么你可以使用第二个选项。当您将网站作为 IIS 中的子应用程序时,它也可能会失败。然后您可以使用第三个选项。
2) 使用Html 格式的相对路径,例如images/somegif.gif
。如果您的页面位于 /someFolder/page.aspx
中,则路径 images/somegif.gif
将与以下内容相同:
http://localhost:[port]/someFolder/images/somegif.gif
和
http://your-production.domain/someFolder/images/somegif.gif
分别用于开发和生产
3) 在 Asp.Net 中使用 ~ 运算符。您可以将其与服务器控件或 ResolveUrl()
等函数一起使用。这种方法比第一种方法更受欢迎,因为它没有上述缺陷。
关于javascript - ResolveUrl 不适用于本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384000/