程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 如何在DNN模塊中插入一個圖片--在模塊中引用資源文件

如何在DNN模塊中插入一個圖片--在模塊中引用資源文件

編輯:關於ASP.NET

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,如下:

<imgsrc=””alt=”youralt”/>

現在問題來了,這個src到底是多少呢?

是使用”./CompanyLogo.gif”?我們先來試試,代碼如下:

<imgsrc=”./CompanyLogo.gif”alt=”youralt”/>

最後生成的html代碼跟這一樣:

<imgsrc=”./CompanyLogo.gif”alt=”youralt”/>

並且圖片沒有顯示,仔細一想,對啊,DNN是一直在根目錄運行,模塊只是作為一個控件加載,DNN的根目錄下自然沒有CompanyLogo.gif這個文件。

這樣不行就使用全名指定吧,這總沒問題了吧。我們來試試:

<imgsrc=”DotNetNuke_2/DesktopModules/MyModuleName/CompanyLogo.gif”alt=”youralt”/>

運行後,圖片顯示了,這樣可以!

不過等等,如果別人用這個模塊,虛擬目錄可能就不是這個名字了,這個怎麼處理?

ModulePath

這樣的話,目錄的路徑就應該動態生成了,DNN已經為我們考慮了這個問題,在PortalModuleBase基類裡,有一個ModulePath屬性,使用這個屬性就可以動態生成資源對應的路徑了。

最後的代碼如下:

<imgsrc=”<%=ModulePath%>CompanyLogo.gif”alt=“youralt”/>

就可以了。

在這裡ModulePath 的值為 "/DotNetNuke_2/DesktopModules/ MyModuleName /"

ResolveUrl

還有一個函數可以了解一下,就是在DotNetNuke.Common.Global類中的ResoveUrl函數

PublicFunctionResolveUrl(ByValurlAsString)AsString

如果傳入的URL以”~”開頭,就會使用ApplicationPath代替”~”。

就是說我們可以用”~”來指代DNN的網站根目錄,這樣對於任何資源,我們只要使用”~”來開頭,從根目錄開始制定,就都可以引用到。

在這個例子裡,可以這麼寫:

Page.ResolveUrl(“~/DesktopModules/MyModuleName/CompanyLogo.gif”)

這裡

ApplicationPath的值為"/DotNetNuke_2"

最後

希望這些小技巧能幫你解決一些問題!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved