2016-04-04 8 views
0

プログラムで設定されたメタデータを設定しようとしています。asp.netを使用してタイトルタグを設定する

私は私のasp.netのマスターページ上の次のセットアップを持っている:

<asp:ContentPlaceHolder ID="MetaTags" runat="server"> 
    <meta name="description" content=""> 
</asp:ContentPlaceHolder> 

と私は、個々のページでこれを持っている:

<asp:Content runat="server" ContentPlaceHolderID="MetaTags">  
<title runat="server" id="pageTitle"></title> 
<meta runat="server" id="pageDescription" name="description"/> 
<meta runat="server" id="pageKeywords" name="keywords" />  
</asp:Content> 

そして、このC#でコード:

pageTitle.InnerText = "TITLE"; 
    pageDescription.InnerText = "DESC"; 
    pageKeywords.InnerText = "KEY"; 

これはページでこれを生成します:

<title id="ctl00_MetaTags_pageTitle">TITLE</title> 
<meta id="ctl00_MetaTags_pageDescription" name="description">DESC</meta> 
<meta id="ctl00_MetaTags_pageKeywords" name="keywords">KEY</meta> 

私が使用していますので、私の理解があるので、私はこのようにそれをやっている:

<asp:ContentPlaceHolder ID="MetaTags" runat="server"> 

を、私は、個々のページに<head>タグを持つことはできません - それは、重複ヘッダータグの原因となりますので、?

私が使用してみました:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="###" MasterPageFile="#####" Title = ""%> 

とC#Page.Title = "Title"

ではなく、これは何も表示されませんでした。

そして、別途Master.Page.Title = "Title";

が、これはどちらか動作しませんでした。

だから、私の質問に2部。

1.誰でも、プログラムでページにメタデータを追加する別の方法を知っていますか?

私は、このようにそれを行うには、メタデータには、IDの例があり2.Ifは:

<title id="ctl00_MetaTags_pageTitle">TITLE</title> 

これはタイトルタグを無効ありません。

答えて

1

1.誰でも、プログラムでページにメタデータを追加する別の方法を知っていますか?

<head runat="server"> 
    <title>Your Example Page</title> 
    <!-- Add your Meta tags into this container --> 
    <asp:PlaceHolder ID="Meta" runat="server" /> 
</head> 

そして、あなたのコードビハインドの中、あなたはできます:あなたは、単にPlaceholderを作成し、背後にあるコードあなたにあなたの個々のメタタグを構築し、それに追加することによって、これを達成でき

HtmlMetaコントロールとしてこれらを構築し、期待通りに単純にそれらを挿入します。

// Build each of your meta tags and add them 
var tags = new List<HtmlMeta>() { 
    new HtmlMeta() { Name = "description",Content = "Your Description Here" }, 
    new HtmlMeta() { Name = "keywords", Content = "a,b,c,d" }, 
    new HtmlMeta() { Name = "robots", Content = "index,follow" } 
}; 

// Add each of them to your placeholder 
foreach(var tag in tags) 
{ 
    Meta.Controls.Add(tag); 
} 
あなた <head>セクションで、次のようにレンダリングされ

<head> 
    <title>Your Example Page</title> 
    <meta name="description" content="Your Description Here"> 
    <meta name="keywords" content="a,b,c,d"> 
    <meta name="robots" content="index,follow"> 
</head> 

これは簡単に調整できます。

2.このようにすれば、メタデータにはIDがあります... これはタイトルタグを無効にしますか?

IIRCは、私は、これはthe spec doesn't specify it as a valid tagものの、期待どおりに動作し、実際の<meta>タグに悪影響を持っていることを信じていません。一般的には、可能であれば、それらを追加しないでください。

関連する問題