2012-03-29 65 views
1

我想添加Facebook標籤到頁面。對於不同的用戶,它們必須有所不同,所以我嘗試將它們動態添加。我有這樣的代碼:如何在asp.net中設置動態元標籤?

<meta name="og:title" content="<%= GetSocialTitle() %>"/> 

但在源頁它沒有揭示,看起來像:

<meta name="og:title" content="&lt;%= GetSocialTitle() %>"/> 

,而不是

<meta name="og:title" content="some title"> 

我試過設置在元代碼後面

HtmlMeta tag = new HtmlMeta(); 
tag.Name = "og:title"; 
tag.Content = GetSocialTitle(); 
Page.Header.Controls.Add(tag); 

但它拋出異常「控件集合不能被修改,因爲控件包含代碼塊(即, <%...%>)「。它確實包含並且我不能替換它們所以我該如何解決這個問題?

+0

相關:http://stackoverflow.com/questions/8104268/inline-code-in-head-tag-asp-net – 2014-03-12 15:08:27

回答

10

如果你想使用後面的代碼去掉那個og:title meta標籤並且把runat =在頭標籤「服務器」

在標記

<head runat="server"> 
    ... 
</head> 

和後面的代碼:

HtmlMeta tag = new HtmlMeta(); 
tag.Name = "og:title"; 
tag.Content = GetSocialTitle(); 
Page.Header.Controls.Add(tag); 

如果你不想落後使用代碼,請從頭標記RUNAT服務器:

<head> 
    <meta name="og:title" content="<%= GetSocialTitle() %>"/> 
    ... 
</head> 
0

另一個小竅門是圍繞內容使用佔位符控制。 所以你的情況,你能...

 <asp:PlaceHolder runat="server"> 
      <meta name="og:title" content="<%= GetSocialTitle() %>"/> 
     </asp:PlaceHolder> 

,它應該正確地翻譯。

HTH

戴夫

相關問題