ResolveUrl不使用localhost

时间:2018-01-22 14:38:18

标签: javascript jquery asp.net

我的网站上的图片存在问题。使用映像源的相对路径时,它可以在开发中使用,但不能在部署中使用。所以我实现了以下代码:

<script>
   var baseUrl = "<%= ResolveUrl("~/") %>";

   var src = baseUrl + "/images/somegif.gif";

   $(".loading").attr("src", src);

</script>

问题是在检查baseUrl的值时,它是&#34; /&#34;。如何将其变为以下值:&#34; http://localhost:[portnumber]/&#34; ?

不幸的是,由于物流,我还没有能够在部署的网站上测试这个。但是我需要它来开发和部署。

  • 我正在使用Visual Studio 2015,在IIS Express上运行本地

1 个答案:

答案 0 :(得分:1)

您不需要关心主机和端口,只需使用:

var src = '<%= ResolveUrl("~/images/somegif.gif") %>' ;
$(".loading").attr("src", src);

它应该在dev和prod环境中工作。如果您确实需要完整路径,可以使用Request.Url.SchemeRequest.Url.HostRequest.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()等函数一起使用。这种方法比首先更优选,因为它没有上述缺陷。