在不同的DNN页面上将URL解析为.aspx

时间:2012-12-05 16:11:58

标签: image url dotnetnuke

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

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

为了解释你所看到的内容,我指向我模块中的.aspx,它将加载图像并将其作为该div的背景图像。我已经知道这很有效。链接到它的网址会出现问题。根据模块是放在父页面上还是子页面内,url将失败。它的唯一工作方式是:

父页面:

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

父母的孩子:

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

儿童:

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

依此类推。无论模块放在何处,我怎样才能获得一致的URL?

3 个答案:

答案 0 :(得分:4)

如果你正在分发这个模块,我实际上会使用ResolveClientUrl()来获取URL / DesktopModules ..如果你在子门户网站设置中,或者如果DNN不在根目录中,那么它将不起作用该网站。

总的来说,它会像

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

你的完整路径是在那里以〜/开头

这将确保正确处理。

答案 1 :(得分:1)

如果您执行url(/DesktopModules/MyModule/(请注意开头的/),则应在您网站的根目录下启动您的网址。假设您没有在子目录中运行您的网站,这应该可以满足您的需求。

答案 2 :(得分:0)

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

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

这主要导致url(/site/DesktopModules/Modulename/ShowPictureImg.aspx?Key=1234)