Skip to main content

ASP.Net DotNetNuke Page Header Head/Meta Tags

Adding meta, css and script tag to the header proved to be too much trial and error. And searching online results in no clear solution either.

My custom requirement was for DotNetNuke Module to add css and script tag at page level head tag not inside the body tag.

Here is the simple solution:
In my view.ascx.vb file, I have added a prerender block of script:


Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender


Try
    Dim htmlHeadTags As String
    Dim htmlHeadCtrl As LiteralControl = New LiteralControl

    htmlHeadTags = "<meta name=""viewport"" content=""initial-scale=1.0, user-scalable=no"" />" _
& "<link href=""http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.12/themes/flick/jquery-ui.css"" rel=""stylesheet"" type=""text/css""/>" _
& "<link id=""ServiceCenterCSS"" rel=""stylesheet"" type=""text/css"" href=""" & ResolveUrl("~/DesktopModules/ServiceCenter/ServiceCenter.css") & """ />" _
& "<script src=""http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.12/jquery-ui.js""></script>"

    htmlHeadCtrl.Text = htmlHeadTags

    Dim header As Web.UI.HtmlControls.HtmlHead
    header = TryCast(Me.Page.Header, Web.UI.HtmlControls.HtmlHead)
    If header IsNot Nothing Then
    
    header.Controls.Add(htmlHeadCtrl)
    End If

    Catch exc As Exception 'Module failed to load

        
        ProcessModuleLoadException(Me, exc)
    End Try
End Sub



Note:
  1. I have added script later than style-sheets as its the recommended way for rendering the style-sheets and JavaScript.
  2. Also note that if you need to use the double quotes within the "...", you just use two double quotes to avoid the compilation or error message.

Please add your thoughts if you use similar or better approach to this requirement.

Thanks,
Wasay

Comments

Popular posts from this blog

Working hours in six months to a year

I usually try to look for how many hours I have worked on a given project and what hours that I  spend on learning or network management tasks.

Below I have added some hours calculation, after finding the breakdown by months from Berkeley website.


Credit: http://controller.berkeley.edu/payroll/payroll-system-pps/pps-training-materials/number-working-hours-month

2017Working hours six months (Jan 1st - Jun 30th): 
130 days x 8 hours =  1040 hours


Working hours six months (Jul 1st - Dec 31th): 
130 days x 8 hours =  1040 hours

Working hours for the year:
1040 hours + 1040 hours = 2080 hours
MonthWorking Days in the monthMonthly Working Hrs1/2 of working hrsMidpoint of working days in the monthDates of HolidaysJanuary22176888 a.m. 1/172,16February20160808 a.m. 2/1520March2318492Noon 3/1631April20160808 a.m. 4/17May2318492Noon 5/1629June22176888 a.m. 6/16July2116884Noon 7/174August2318492Noon 8/16September2116884Noon 9/154October22176888 a.m. 10/17November22176888 a.m. 11/1610,23,24December21168…

Completed UiPath - RPA Developer Advance Training

After a month of training, with late nights and weekends I have completed the UiPath RPA Developer Advance Training.

The Level 1 Foundation Training pretty much covered all the basics of Desktop studio and workflows, only draw back was I started with the default foundation course which was for 2016, and all document reference links where pointing to 2016 version. I didn't understand it during the foundation training and kept switching to 2018 version document/page.

Only after completing the Foundation course that I realized, I was suppose to have started with the 2018 version of Level 1 Foundation Training, but as it was optional I didn't have to retake the 2018 version, the 2016 was good enough for moving to level 2.

The Level 2 Orchestrator 2018.3 Training as good. It gave good understanding of Queue's, Jobs, and schedules and I was able to complete the level two much faster then the level 1.

The Level 3 UiPath Advanced Training was bit tough as it involved the assignme…