2012-12-08 24 views
6

Jak mogę dołączyć niestandardowe css & JavaScript dla konkretnego modułu w DotnetNuke?CSS w modułach DNN

Rozumiem, że to nie jest tak jak normalna strona ASP.Net.

Odpowiedz

15

Jeśli moduł ma plik o nazwie module.css w katalogu głównym folderu, zostanie automatycznie dołączony do strony z modułem.

Dla innych CSS i dla JavaScript, powinieneś użyć Client Resource Management framework, aby dołączyć odpowiednie zasoby. Coś takiego:

<%@ 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

Hi! Znalazłem twoją odpowiedź na temat DnnCssInclude i użyłem jej i działa prawie idealnie. Mam jednak niewielki problem i zastanawiałem się, czy mógłbyś pomóc. Mój przypadek: Mam kontrolę, która zawiera kreator asp.net i używam niestandardowego css dla kreatora. Kiedy ładuje się po raz pierwszy, niektóre css (nie wszystkie) nie ładują się poprawnie (zobacz zrzut ekranu tutaj: http://awesomescreenshot.com/0293xq5k49). Kiedy kliknę przycisk na stronie, następuje odświeżenie strony, a następnie css zostanie poprawnie zastosowany (sprawdź zrzut ekranu tutaj: http://awesomescreenshot.com/0773xq5t90). jakieś pomysły? –

+0

@PanagiotisPalladinos Myślę, że jeśli ładuje się jakiś CSS, prawdopodobnie jest to konflikt z czymś innym na stronie, a nie problem z ładowaniem CSS – bdukes

-2

Aby dodać zewnętrznego JavaScript do modułu niestandardowego:

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

To jest bardzo ręczne i nie będzie skalowane. DNN ma API do robienia tego samego przy użyciu Client Dependency Framework, aby umożliwić minimalizację, agregację i buforowanie, z mniejszą ilością kodu, większą powtarzalnością kodu i większą skalowalnością. –