2012-12-05 16 views
0

我在自定義DNN模塊的服務器端場景後面創建了以下HTML代碼。這必須在服務器上創建,而不是在CSS中完成。在不同的DNN頁面上將URL解析爲.aspx

<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) 

等等等等向前。無論模塊放置在何處,我如何獲得一致的網址?

回答

0

我實際上發現ControlPath在所有情況下都能工作,據我所知。所以我最終的結果是這樣的。

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

這實質上導致url(/site/DesktopModules/Modulename/ShowPictureImg.aspx?Key=1234)

1

如果你做url(/DesktopModules/MyModule/(請注意/開頭),它應該在你的網站的根部開始你的URL。假設你沒有在一個子目錄中運行你的網站,這應該適用於你所需要的。

4

如果你正在將這個模塊分發給wild,我實際上使用ResolveClientUrl()來獲取URL作爲/ DesktopModules ..如果你在子門戶設置中,或者如果DNN不在網站的根。

整體而言,這會是這樣的

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

您的完整路徑,在那裏有〜/開頭

這將確保它是正確處理。

+0

最後我用了ControlPath其工作。 – Mitchell