【问题标题】:How to direct all the links in html to the root folder of the website?如何将html中的所有链接指向网站的根文件夹?
【发布时间】:2015-10-19 19:20:59
【问题描述】:

由于我被要求在公司服务器下开发一个网站,我发现很难将资源重定向到该网站的根目录。如果我使用“/”来指定根目录,那么所有的javascripts、图像和css文件都可以在localhost中完美使用。但是,如果我尝试连接到公司的服务器,一切都会失败,因为包含该网站所有资料的文件夹只是该服务器的子目录。我尝试使用 base 链接到根目录 .它适用于 javascript 和图像,但不知何故不能使用 css 文件。当我使用检查元素时,css 的链接似乎是 ../../stylesheet/some.css 而 javascript 的来源似乎是 javascript/master.js。我想知道是否有人可以帮助我解决问题,因为该网站在子文件夹数量方面非常复杂,我无法使用 ../../../.... 来引用资源.下面是我的项目的结构。

【问题讨论】:

  • 使用文档根引用确实是最容易使用的选项。我真的不明白 - 究竟是什么阻止你使用 /javascript/myscript.js?
  • 实际上 javascript 在所有情况下都可以工作,但 css 不工作。

标签: html asp.net server directory-structure


【解决方案1】:
  1. 在 .aspx 中 使用 HttpRequest.ApplicationPath (ref MSDN)

    <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Label1.Text = Request.ApplicationPath; Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif"; Label2.Text = Image1.ImageUrl; } </script>

  2. 在 .cs 中 使用 Server.MapPath("~/bin")

【讨论】:

  • 对于第一种方法,这是否意味着我必须一个一个地重定向所有链接?对于第二种方法,我尝试添加 Server.MapPath("~/");到 page_load,似乎 css 可以工作,但 javascript 和图像不能工作。
【解决方案2】:

似乎很难做到这一点。我要使用的方法是将文件夹复制到路径中。由于“/”指向该服务器的根目录,因此这种方法似乎更直接。 我添加了一个应用设置。

  <appSettings>
    <add key="link" value="/a/b/c/d/e/myfolder/"/>
  </appSettings>

每当我需要引用资源时,我都会使用 appsetting 中的变量来获取路径。例如,

<link rel="stylesheet" href="<%= ConfigurationManager.AppSettings["link"] %>stylesheet/master.css" />

这不是最好的解决方案,但我认为它可以轻松实现目的并且易于维护,因此我将其发布在这里。

【讨论】:

  • 很高兴你解决了。但是,为什么不使用ConfigurationManager,而不是使用一个简单的变量呢?
  • 我有很多直接指向根目录的资源,我只在测试服务器上进行测试。一旦我完成了网站,它可能会被上传到另一台服务器。因此将其保存在 Web 配置中更易于维护。
猜你喜欢
  • 1970-01-01
  • 2014-06-19
  • 2023-03-07
  • 1970-01-01
  • 2015-07-20
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
相关资源
最近更新 更多