当存在虚拟目录时,我的.js文件中的图像路径引用(src ='/ images / image.jpg')失败,因为虚拟目录包含在路径层次结构中
我可以在我的应用程序的其他区域处理这个问题,我可以使用服务器方法为我提供正确的路径信息。
为.js文件处理此问题的好方法是什么?
答案 0 :(得分:3)
引用将来自js文件的位置;不是来自应用程序根目录。假设您的根目录下有一个js目录,请尝试在图像的路径中添加..(../ images / image.jpg)。
答案 1 :(得分:3)
您可以将路径参数传递给您的函数吗?
// in the code behind
String imagePath = Page.ResolveClientUrl("~/images/");
...
<%-- in mark up --%>
doSomething('<%= imagePath %>');
...
// in js
function doSomething(path) {
var imageSrc = path + '/image.jpg';
}
有一些方法可以让它更优雅,但这是一般的想法。
答案 2 :(得分:0)
我创建了一个这样的处理程序来输出一些环境参数,以便在各种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;
}
}
}
}
在web.config中启用处理程序:
<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";
答案 3 :(得分:0)
我假设你正在运行Unix的味道。你有几个我肯定会有用的选择,还有一个我不确定的选择: