【问题标题】:Resolve url to .aspx on different DNN Pages在不同的 DNN 页面上将 url 解析为 .aspx
【发布时间】:2012-12-05 16:11:58
【问题描述】:

我在自定义 DNN 模块中的服务器端在后台创建了以下 HTML 代码。这必须在服务器上而不是在 CSS 中创建。

<div class=""ca-icon"" style=""background-image: url(DesktopModules/MyModule/" +
                    "ShowPictureImg.aspx?Key=" + KeyImgList(itemCount - 1) + ")"">

为了解释您所看到的,我将指向我的模块中的一个 .aspx,它将加载图像并将其放置为该 div 的背景图像。我已经知道这行得通。链接到它的 url 会出现问题。根据模块是放置在父页面还是子页面中,url 将失败。它的唯一工作方式是这样的:

父页面:

url(DesktopModules/MyModule/ShowPictureImg.aspx?Key=SomeKey)

父母的孩子:

url(../DesktopModules/MyModule/ShowPictureImg.aspx?Key=SomeKey)

孩子的孩子:

url(../../DesktopModules/MyModule/ShowPictureImg.aspx?Key=SomeKey)

等等等等。无论模块放置在哪里,我怎样才能获得一个始终有效的 url?

【问题讨论】:

    标签: image url dotnetnuke


    【解决方案1】:

    如果您将此模块分发到野外,我实际上会使用 ResolveClientUrl() 将 URL 获取为 /DesktopModules.. 如果您处于子门户设置中,或者 DNN 不在根目录中,则等将不起作用网站。

    总体来说是这样的

    <%= Page.ResolveClientUrl("~/Desktop...") %>
    

    你的完整路径在哪里以 ~/ 开头

    这将确保它得到正确处理。

    【讨论】:

      【解决方案2】:

      如果您使用url(/DesktopModules/MyModule/(注意开头的/),它应该在您网站的根目录开始您的URL。假设您没有在子目录中运行您的网站,这应该可以满足您的需要。

      【讨论】:

        【解决方案3】:

        据我所知,我实际上发现ControlPath 在所有情况下都有效。所以我对 url 的最终结果是这样的。

        "url(" + ControlPath + "ShowPictureImg.aspx?Key=" + Key + ")"
        

        这基本上导致url(/site/DesktopModules/Modulename/ShowPictureImg.aspx?Key=1234)

        【讨论】:

          猜你喜欢
          • 2015-10-13
          • 2019-04-16
          • 1970-01-01
          • 2015-06-11
          • 1970-01-01
          • 2015-05-18
          • 1970-01-01
          • 2011-02-16
          • 1970-01-01
          相关资源
          最近更新 更多