网上有许多相似的代码可以实现动态设置meta标签里的内容:
HtmlMeta keywords = new HtmlMeta(), // keywords
HtmlMeta description = new HtmlMeta(); // description
keywords.Name = "keywords";
keywords.Content = key;
description.Name = "description";
description.Content = des;
Page.Header.Controls.Add(keywords);
Page.Header.Controls.Add(description);
不过,我个人觉得不太好用,因为这样做不适合用用户控件,下面说说我是如何做的。
首先,建一个ascx,html代码如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MetaList.ascx.cs" Inherits="GEMarketingWeb.Controls.MetaList" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
<meta name="robots" content="all" />
<meta id="mkeywords" runat="server" name="keywords" content="***keywords" />
<meta id="mdescription" runat="server" name="description" content="***description"/>
然后在后代CS文件里加入:
public void SetKeywords(string value)
{
this.mkeywords.Attributes["Content"] = value;
}
public void SetDescription(string value)
{
this.mdescription.Attributes["Content"] = value;
}
P.S:本以为mkeywords,mdescription做为HtmlControl应该能转换成HtmlMeta对象,尝试后发现是不行的。
这样,引用了这个用户控制的页面,都能通过使用这个控件对象来动态设置meta标签中的keywords和description了。