English 中文(简体)
B. 虚拟目录的绝对道路参照问题
原标题:Absolute path reference problem on virtual directory
  • 时间:2009-11-05 21:31:59
  •  标签:

在我的档案中,我的图像参考(src=/images/image.jpg)在有虚拟目录时正在失败,因为虚拟目录已经包含在路径等级上。

我可以在我申请的其他领域处理这个问题,在那里,我有服务器方法给我正确的信息。

对于档案来说,如何处理这一问题?

最佳回答

参考文件将来自js案的所在地,而不是申请来源。 假定你们有一把 director子,试图在形象的道路上添加一.(images/image.jpg)。

问题回答

您能否通过一条途径,履行您的职责?

// in the code behind
  String imagePath = Page.ResolveClientUrl("~/images/");

    ...

    <%-- in mark up --%>
    doSomething( <%= imagePath  %> );        

    ...

    // in js
    function doSomething(path) {

     var imageSrc = path +  /image.jpg ;

    }

将会有办法使它更具有权威性,但这符合一般的想法。

我假定你会再接一只孤军。 我确信,你们有两种选择,而且我确信:

  1. Make /images a virtual directory. This is what I would do.
  2. Store a link to /images called images in each virtual directory you use and change src to images/image.jpg . I don t have a Unix webserver to test this on, so I m not sure if this will work.
  3. Create a subdirectory in each of your virtual directories called images, and store links to the images there.

我创建了一个手套,用于生产一些环境参数,用于在各种联合材料中重新使用:

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

现在,对于假设环境的所有联合材料和文字来说。 as已经装满,你可以参考环境。 根基

var imagePath = Environment.RootPath + "images/image.jpg";




相关问题
热门标签