2012-12-08 190 views
6

我怎麼能包括自定義CSS &特定模塊的JavaScript在DotnetNuke?CSS在DNN模塊

我知道它不像普通的ASP.Net頁面。

回答

15

如果您的模塊在模塊文件夾的根目錄中有一個名爲module.css的文件,它將自動包含在帶有該模塊的頁面中。

對於其他CSS和JavaScript,您應該使用Client Resource Management framework來包含所需的資源。事情是這樣的:

<%@ Register TagPrefix="dnn" 
    Namespace="DotNetNuke.Web.Client.ClientResourceManagement" 
    Assembly="DotNetNuke.Web.Client" %> 
  
<dnn:DnnCssInclude runat="server" 
    FilePath="~/DesktopModules/MyModule/css/the-style.css" /> 
<dnn:DnnJsInclude runat="server" 
    FilePath="~/DesktopModules/MyModule/js/the-script.js" 
    ForceProvider="DnnFormBottomProvider" /> 
+0

嗨!我找到了關於DnnCssInclude的答案並使用它,它幾乎完美地工作。然而,我確實有輕微的問題,我想知道你能否幫忙。 我的情況:我有一個包含asp.net嚮導的控件,我使用自定義css作爲嚮導。當它第一次加載的一些CSS(不是全部)不正確加載(檢查截圖在這裏:http://awesomescreenshot.com/0293xq5k49)。當我點擊一個按鈕時,頁面進行回發,然後正確應用css(請查看截圖:http://awesomescreenshot.com/0773xq5t90)。有什麼想法嗎? –

+0

@PanagiotisPalladinos我認爲如果某些CSS正在加載,那麼它可能與頁面上的其他內容發生衝突,而不是您如何加載CSS的問題。 – bdukes

-2

要外部JavaScript添加到自定義模塊:

string externaJs= "externaJs"; 
Type cstype = System.Reflection.MethodBase.GetCurrentMethod().GetType(); 
string cstext = "<script src=\"" + 
       ResolveUrl("~/DesktopModules/ModuleName/js/JsName.js") + 
       "\" type=\"text/javascript\"></script>"; 

if (!Page.ClientScript.IsClientScriptBlockRegistered(externaJs)) 
    Page.ClientScript.RegisterClientScriptBlock(cstype, externaJs, cstext, false); 
+0

這是非常手動的,並且不會很好地擴展。 DNN擁有一個使用客戶端依賴框架完成同樣任務的API,以實現最小化,彙總和緩存,代碼更少,代碼可重用性更高,並且具有更好的擴展能力。 –