當虛擬目錄被包含到路徑層次結構中時,我的.js文件中的映像路徑引用(src ='/ images/image.jpg')失敗了。虛擬目錄上的絕對路徑引用問題
我可以在我的應用程序的其他地方處理這個問題,我有服務器方法給我正確的路徑信息。
處理這個.js文件的好方法是什麼?
當虛擬目錄被包含到路徑層次結構中時,我的.js文件中的映像路徑引用(src ='/ images/image.jpg')失敗了。虛擬目錄上的絕對路徑引用問題
我可以在我的應用程序的其他地方處理這個問題,我有服務器方法給我正確的路徑信息。
處理這個.js文件的好方法是什麼?
的引用將從js文件的位置;而不是從應用程序根目錄。假設你的根目錄下有一個js目錄,請嘗試在圖像路徑(../images/image.jpg)中添加一個.. ..
我在不同的JS對象創建的處理程序,如這輸出一些環境參數進行再利用:
/Environment.ashx/.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication2
{
/// <summary>
/// Summary description for $codebehindclassname$
/// </summary>
public class Environment : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/javascript";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));
context.Response.Write(String.Format("Environment = {{ RootPath:\"{0}\" }};", context.Request.ApplicationPath)); // set any application info you need here
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
啓用您的網頁的處理程序。配置:
<configuration>
<system.web>
<httpHandlers>
<!-- ... -->
<add verb="*" path="environment.ashx" validate="false" type="MvcApplication2.Environment, MvcApplication2"/>
</httpHandlers>
</system.web>
設置你的主人或內容ASPX頁面(如下假設ASP.NET MVC):
<html>
<head>
<!-- set up your other JS includes, etc. ... -->
<script src="<%=Url.Content("~/environment.ashx"); %>" type="text/javascript"></script>
</configuration>
</head>
</html>
現在,對於承擔Environment.ashx所有的JS對象和腳本已經載入,你可以參考Environment.RootPath
var imagePath = Environment.RootPath + "images/image.jpg";
我假設你正在運行Unix的風味。你有幾個選項,我肯定會工作,而我不確定的一個選項:
由於他使用ASP.Net,我懷疑他沒有使用任何Unix的味道。 – SLaks
你可以傳遞一個路徑參數給你的函數嗎?
// in the code behind
String imagePath = Page.ResolveClientUrl("~/images/");
...
<%-- in mark up --%>
doSomething('<%= imagePath %>');
...
// in js
function doSomething(path) {
var imageSrc = path + '/image.jpg';
}
有辦法讓它更優雅,但這是一般的想法。
是的,OP需要使用相關路徑 – mamu