0

我在自定义 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?

4

3 回答 3

4

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

总的来说,它会像

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

你的完整路径在哪里,开头有一个 ~/

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

于 2012-12-06T05:42:32.283 回答
1

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

于 2012-12-06T04:13:14.280 回答
0

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

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

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

于 2012-12-06T20:09:32.023 回答