2014-03-31 67 views
1

我尋覓了很多關於「如何編程更改標題」,只有得到這個結果不工作,至少在剃刀腳本更改頁面標題在DNN編程方式從剃刀

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

這在剃刀主機腳本中不起作用,是否有任何其他解決方案可以從Razor主機腳本更改頁面標題?

+1

你可以訪問你的模板/佈局文件(假設有一個)?你可以在html的標題部分放一個'@ ViewBag.Title',這樣你就可以在所有頁面中設置 – mituw16

+0

該模板是一個DNN皮膚,它是一個ascx文件 –

回答

4

多次試驗和合並等代碼後,我已經找到了解決辦法

使用這會給你訪問該頁面的訪問,所以你可以做任何你想做的事情,改變標題等

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

而這個代碼就可以訪問到DNN頁面,讓您可以插入控件等

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

感謝分享Pola。在DNN的C#Razor上非常出色。 – MDM

+0

@MDM很高興它幫助:) –

1

我只是想增加波拉的答案的東西,會^ h開箱即用「開箱即用」。

很難找到直接與DNN一起工作的示例,所以我提交以下內容;

@{ 
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); 
} 
0

這是爲我工作的唯一途徑:

((DotNetNuke.Framework.CDefault)this.Page).Title = "your title";