javascript - ResolveUrl 不适用于本地主机

标签 javascript jquery asp.net

我的网站中的图像存在问题。当对图像源使用相对路径时,它在开发中有效,但在部署中无效。所以我实现了下面的代码:

<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.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

分别用于开发和生产

3) 在 Asp.Net 中使用 ~ 运算符。您可以将其与服务器控件或 ResolveUrl() 等函数一起使用。这种方法比第一种方法更受欢迎,因为它没有上述缺陷。

关于javascript - ResolveUrl 不适用于本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384000/

相关文章:

javascript - 当同级 ng-include 中的表单 $invalid 时,如何禁用 ng-include 中的按钮?

javascript - 如何使用 ES6 对象传播来更新数组中的对象?

javascript - 如何在 jQuery Datepicker ui 中阻止多个日期范围

javascript - 正则表达式仅替换每个匹配项的第一次出现

javascript - CSS 的哪个属性不允许固定标题覆盖滚动元素

asp.net - 页面上的链接按钮并将其设置为默认按钮,在 IE 中可以正常工作但在 Mozila 中不行

javascript - AJAX - 检索多个响应值?

javascript - 在 firefox 附加面板中显示远程图像

javascript - 悬停向上滚动菜单样式

javascript - 单选按钮在 javascript 中列出所选项目值