如何在DNN模块中插入一个图片--在模块中引用资源文件
DNN永遠都是運行在網站的根目錄
DNN的設計上最大的特點就是始終是使用一個網站根目錄下的Default.aspx文件加載皮膚和模塊從而實現整個網站的頁面。這也就是說DNN這個Asp.net程序永遠是運行在DNN網站的根目錄的,所有的資源文件(如:JS文件,圖片,CSS)的引用都要從DNN網站的根目錄算起。
?
這么說有點難以理解,舉個例子吧:
假設你把DNN安裝到了一個虛擬目錄下面,比如DotNetNuke_2目錄下,那么你輸入http://localhost/DotNetNuke_2就可以訪問到這個DNN網站了。
然后你新建了一個模塊,放到了DNN網站的DesktopModules/MyModuleName目錄下。現在你新建模塊在IIS中位置應該是這樣的:http://localhost/DotNetNuke_2/DesktopModules/MyModuleName
問題來了
現在你需要在View.ascx文件中放入一個圖片,作為界面的一部分,這個圖片的名字是”CompanyLogo.gif”,位置就在”MyModuleName”這個目錄下,自然,我們可以放入一個img tag,如下:
<img?src=””?alt=”your?alt”?/>
現在問題來了,這個src到底是多少呢?
是使用”./CompanyLogo.gif”?我們先來試試,代碼如下:
<img?src=”./CompanyLogo.gif”?alt=”your?alt”?/>
最后生成的html代碼跟這一樣:
<img?src=”./CompanyLogo.gif”?alt=”your?alt”?/>
并且圖片沒有顯示,仔細一想,對啊,DNN是一直在根目錄運行,模塊只是作為一個控件加載,DNN的根目錄下自然沒有CompanyLogo.gif這個文件。
這樣不行就使用全名指定吧,這總沒問題了吧。我們來試試:
<img?src=”DotNetNuke_2/DesktopModules/MyModuleName/CompanyLogo.gif”?alt=”your?alt”?/>
運行后,圖片顯示了,這樣可以!
不過等等,如果別人用這個模塊,虛擬目錄可能就不是這個名字了,這個怎么處理?
ModulePath
這樣的話,目錄的路徑就應該動態生成了,DNN已經為我們考慮了這個問題,在PortalModuleBase基類里,有一個ModulePath屬性,使用這個屬性就可以動態生成資源對應的路徑了。
最后的代碼如下:
<img?src=”<%=?ModulePath?%>?CompanyLogo.gif”?alt?=?“your?alt”?/>
就可以了。
在這里ModulePath 的值為 "/DotNetNuke_2/DesktopModules/ MyModuleName /"
ResolveUrl
還有一個函數可以了解一下,就是在DotNetNuke.Common.Global類中的ResoveUrl函數
Public?Function?ResolveUrl(ByVal?url?As?String)?As?String
如果傳入的URL以”~”開頭,就會使用ApplicationPath代替”~”。
就是說我們可以用”~”來指代DNN的網站根目錄,這樣對于任何資源,我們只要使用”~”來開頭,從根目錄開始制定,就都可以引用到。
在這個例子里,可以這么寫:
Page.ResolveUrl(“~/DesktopModules/?MyModuleName?/CompanyLogo.gif”)
這里
ApplicationPath的值為"/DotNetNuke_2"
最后
希望這些小技巧能幫你解決一些問題!
總結
以上是生活随笔為你收集整理的如何在DNN模块中插入一个图片--在模块中引用资源文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海三菱菱云三故障91594B
- 下一篇: Fedora再次安装手记--很爽的Win