使用asp.net设置标题标签

时间:2016-04-04 14:54:19

标签: c# html asp.net seo

我正在尝试以编程方式设置元数据。

我的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";

但这也不起作用。

所以,我问题的两个部分;

1.是否有人知道以编程方式向页面添加元数据的另一种方式。

2.如果我这样做,并且元数据有id,例如:

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

这是否会使标题标签无效。

1 个答案:

答案 0 :(得分:1)

  

1.是否有人知道以编程方式向页面添加元数据的另一种方式。

您只需创建Placeholder然后在代码隐藏中构建单个元标记并将其添加到其中即可实现此目的:

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

然后在您的代码隐藏中,您可以将这些构建为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,我认为这不会对实际<meta>代码按预期工作产生任何不利影响,尽管the spec doesn't specify it as a valid tag。但一般情况下,如果可能,您应该避免添加它们。