我的网站上的图片存在问题。使用映像源的相对路径时,它可以在开发中使用,但不能在部署中使用。所以我实现了以下代码:
<script>
var baseUrl = "<%= ResolveUrl("~/") %>";
var src = baseUrl + "/images/somegif.gif";
$(".loading").attr("src", src);
</script>
问题是在检查baseUrl的值时,它是&#34; /&#34;。如何将其变为以下值:&#34; http://localhost:[portnumber]/&#34; ?
不幸的是,由于物流,我还没有能够在部署的网站上测试这个。但是我需要它来开发和部署。
答案 0 :(得分:1)
您不需要关心主机和端口,只需使用:
var src = '<%= ResolveUrl("~/images/somegif.gif") %>' ;
$(".loading").attr("src", src);
它应该在dev和prod环境中工作。如果您确实需要完整路径,可以使用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
分别为dev和prod
3)在Asp.Net中使用〜运算符。您可以将其与服务器控件或ResolveUrl()
等函数一起使用。这种方法比首先更优选,因为它没有上述缺陷。