【问题标题】:Issue wwith relative paths in DotNetNukeDotNetNuke 中的相对路径问题
【发布时间】:2012-01-25 10:38:06
【问题描述】:

我创建了自定义 dnn 模块。 模块当然是一个单独的组件。 在模块项目中,我有文件夹Images。 而且我在引用具有相对路径的图像时遇到了可怕的问题。 我试过了

background: url(~/Images/image01.png)
background: url(~/MyCustomModule/Images/image01.png)
background: url(~/DesktopModules/MyCustomModule/Images/image01.png)
etc.

没有任何效果。 让它工作的唯一方法是当我写这样的东西时:

background: url(../../DesktopModules/MyCustomModule/Images/image01.png)

但这适用于我的生产服务器,但不适用于我的本地 dnn 安装。 是否有任何正确的方法可以引用此文件夹中的图像?

【问题讨论】:

    标签: asp.net css dotnetnuke relative-path


    【解决方案1】:

    在您的 CSS 文件中,您有几个选项。

    使用根路径

    background: url(/DesktopModules/MyModule/Images/MyImage.png);
    

    这可行,但前提是不在“子门户”或非虚拟目录设置中。

    如果可以的话,最好的选择是使 URL 相对于 css 文件本身...

    所以,如果您的 css 在 /DesktopModules/MyModule 中,那么您将使用用户

    background: url(Images/MyImage.png); 
    

    这应该适用于两种情况。

    【讨论】:

      【解决方案2】:

      原因:缺少服务器名称。在本地机器上,地址看起来像http://localhost/<servername> - 例如我的地址是http://localhost/dnn6.

      它在本地机器上不起作用的原因是因为浏览器正在寻找http://localhost/Images/image01.png or http://localhost/DesktopModules/MyCustomModule/Images/image01.png.的图像

      我更喜欢在后面的代码中插入我的 css 和其他脚本。这样就包含了服务器名称,并且它适用于生产和开发服务器。

      LiteralControl litScripts = new LiteralControl();
      litScripts.Text +="<link href=\"" + this.TemplateSourceDirectory + 
      "/CSS/Form.css\" rel=\"stylesheet\" type=\"text/css\" />";
      Page.Header.Controls.Add(litScripts);
      

      在我的生产服务器上,网址看起来像

      <link href="/DesktopModules/MyCustomModule/CSS/Form.css"
      rel="stylesheet" type="text/css" />
      

      在开发服务器上,插入为

      <link href="/DNN6/DesktopModules/MyCustomModule/CSS/Form.css" rel="stylesheet" type="text/css" />
      

      现在编辑 Form.css 使其看起来像这样,

      background: url(../Images/image01.png)
      

      【讨论】:

        【解决方案3】:

        您在顶部示例中使用的链接通常不适用于 CSS 文件。 ~ 是由 ASP.NET 处理的特殊内容,表示应用程序的根。您的 CSS 文件将不知道那是什么,并且会按字面意思传递它,这可能会破坏链接。

        您可以使用以斜杠开头的有根路径,而不是使用相对路径吗?文件所在位置的正确性:

        background: url(/DesktopModules/MyCustomModule/Images/image01.png)
        background: url(/MyApplication/DesktopModules/MyCustomModule/Images/image01.png)
        background: url(/MyApp/Subdir/DesktopModules/MyCustomModule/Images/image01.png)
        

        请确保 URL 以 / 开头,表示“网站的根”

        【讨论】:

        • 当我输入 'background: url(/DesktopModules/MyCustomModule/Images/image01.png)' 它适用于生产但不适用于本地 dnn :(
        【解决方案4】:

        css 文件对 ~ 字符一无所知。路径应该是相对于那些 css 文件的位置

        【讨论】:

          猜你喜欢
          • 2019-07-18
          • 2014-07-03
          • 2014-05-09
          • 2016-01-08
          • 2011-04-29
          • 1970-01-01
          • 2015-08-14
          • 2016-07-10
          • 2019-03-16
          相关资源
          最近更新 更多