2011-12-16 24 views
4

我試圖在運行時向head元素添加一些代碼。當我在頁面中的用戶控件的頁面加載中執行此操作時:Page.Header.Controls.Add(控制)正在將控件添加到<body>而不是<head>

HtmlGenericControl hc = new HtmlGenericControl(); 
hc.InnerHtml = GetParameter("HeaderCode"); 
Page.Header.Controls.Add(hc); 

該控件在body標籤中作爲第一個子元素結束。例如:

... 
</head> 
<body> 
<span><meta>Test</meta></span> 
... 

從我的理解,Page.Header應該是Head元素。在aspx頁面中,頭部具有runat="server"屬性集。

任何想法如何我可以注入一個字符串到<head>元素?

+0

在該示例的情況下,GetParameter返回一個值的字符串:「測試」 – Jbecwar 2011-12-16 17:35:05

回答

8

頭元素可能會限制內容的類型。當我們將JavaScript注入頭部時,我們使用LiteralControl來完成它。

例如:

Page.Header.Controls.Add(New LiteralControl("<script language='javascript' type='text/javascript'>alert('test');</script>")) 
+0

這是問題所在。當添加一個HtmlGenericControl時,它用一個span標籤包裝它。 Chrome瀏覽器和IE將span標籤移動到主體,您可以查看是否查看頁面源代碼並檢查元素。謝謝你的幫助。 – Jbecwar 2011-12-16 17:43:58

0

嘗試下面的代碼來添加JavaScript,CSS或任何其他資源,如元標記。我已經成功實施在我的網站驗證碼:

HtmlGenericControl my_js = new HtmlGenericControl("script"); 
      my_js.Attributes["async"] = "async"; 
      my_js.Attributes["type"] = "text/javascript"; 
      my_js.Attributes["src"] = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"; 
      Page.Header.Controls.Add(my_js); 

您需要使用命名空間:「使用System.Web.UI.HtmlControls」使用HtmlGenericControl。

相關問題