I've searched a lot for "How to change the title programatically" and only got this result which doesn't work, at least in Razor scripts

DotNetNuke.Framework.CDefault tp = (DotNetNuke.Framework.CDefault)this.Page;
tp.Title = "New Title Here";

This doesn't work in razor host scripts, is there any other solutions to change the page title from Razor host script ?

有帮助吗?

解决方案

After many trials and merging others codes, I've found the solution

Using this will give you access to the page access, so you can do whatever you want with it, changing title etc.

var pageObj = Context.CurrentHandler as Page;
pageObj.Title = "My New Title for the page";

And this code will give access to the DNN Page, So you can insert controls etc.

DotNetNuke.Framework.CDefault tp = (DotNetNuke.Framework.CDefault)Context.CurrentHandler;
tp.FindControl("Head").Controls.Add(NewControlObj);

其他提示

I'd just like to add to Pola's answer with something that will hopefully work "out of the box".

It's hard to find examples that work directly with DNN, so I submit the following;

@{
System.Web.UI.HtmlControls.HtmlMeta objMetaDescription = new System.Web.UI.HtmlControls.HtmlMeta();
objMetaDescription.Name = "DESCRIPTION";
objMetaDescription.Content = "This will be the meta description content";

DotNetNuke.Framework.CDefault tp = (DotNetNuke.Framework.CDefault)Context.CurrentHandler;
tp.FindControl("Head").Controls.Add(objMetaDescription);
}

This is the only way working for me:

((DotNetNuke.Framework.CDefault)this.Page).Title = "your title";
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top