• asp.net动态设置页面的title,meta标签


    // 设置关键字和页面描述
    public void setMeta(string key,string des)
    {
    HtmlMeta
    keywords = new HtmlMeta(), // keywords
    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);
    }

    在ASP.NET编程中,由于经常采用一个页面通过不同的参数来显示不同的内容,因此常常需要实现动态输出不同的html header, 比如title, keywords, descrtptions等。

    推荐的简单做法如下:

    protected void Page_Load(object sender, EventArgs e)
    {
    //Page title
    Page.Title = "This is a title and meta test page.";

    //Encode/Content type
    HtmlMeta encode = new HtmlMeta();
    encode.HttpEquiv = "Content-Type";
    encode.Content = "text/html; charset=utf-8";
    Page.Header.Controls.Add(encode);

    //Language
    HtmlMeta lang = new HtmlMeta();
    lang.HttpEquiv = "Content-Language";
    lang.Content = "zh-cn";
    Page.Header.Controls.Add(lang);

    //Description
    HtmlMeta desc = new HtmlMeta();
    desc.Name = "Description";
    desc.Content = "Test the meta controls";
    Page.Header.Controls.Add(desc);

    //Keyword
    HtmlMeta keywords = new HtmlMeta();
    keywords.Name = "keywords";
    keywords.Content = "title,meta,test,page";
    Page.Header.Controls.Add(keywords);

    //Link/CSS
    HtmlLink cssLink = new HtmlLink();
    cssLink.Href = "MasterPage.css";
    cssLink.Attributes.Add("rel", "stylesheet");
    cssLink.Attributes.Add("type", "text/css");
    Page.Header.Controls.Add(cssLink);
    }

    浏览时输出的页面源码便会达到如下效果:

    <head><title>
    This is a title and meta test page.
    </title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Content-Language" content="zh-cn" /><meta name="Description" content="Test the meta controls" /><<meta name="keywords" content="title,meta,test,page" /><link href="MasterPage.css" rel="stylesheet" type="text/css" /></head>

    由于需要动态修改Header的Controls集合,因此如果放在用户自定义控件的Page_Onload事件中因为已经太迟而到处出现异常。对于希望用通用的控件实现这一功能的场合,建议包装一个普通的类,然后在MasterPager或者Page的Page_OnLoad中调用一下即可。

    #region PAGE HEAD

    //Page meta information

    public void BackHeadContent(HtmlControl htmlCtrl)
    {
    Content(htmlCtrl, "网站后台管理系统", "~/CssStyle/SiteStyles.css");
    }

    public void HeadContent(HtmlControl htmlCtrl, string strPageTitle)
    {
    Content(htmlCtrl, strPageTitle, "~/CssStyle/Styles.css");
    }
    private void Content(HtmlControl htmlCtrl, string strTitle,string cssFile)
    {
    //Title
    HtmlTitle title = new HtmlTitle();
    title.Text = strTitle;
    htmlCtrl.Controls.Add(title);

    //Link/CSSfile:
    HtmlLink cssLink = new HtmlLink();
    cssLink.Href = cssFile;
    cssLink.Attributes.Add("rel", "stylesheet");
    cssLink.Attributes.Add("type", "text/css");
    htmlCtrl.Controls.Add(cssLink);

    HtmlMeta
    author = new HtmlMeta(), // author
    copyright = new HtmlMeta(), // copyright
    date = new HtmlMeta(), // date
    keywords = new HtmlMeta(), // keywords
    description = new HtmlMeta(), // description
    robots = new HtmlMeta();// robots

    author.Name = "Author";
    author.Content = "Insus.NET";

    copyright.Name = "Copyright";
    copyright.Content = "Copyright 2008 Insus.NET";

    date.Name = "date";
    date.Content = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();

    keywords.Name = "keywords";
    keywords.Content = "Insus ";

    description.Name = "description";

    robots.Name = "robots";
    robots.Content = "all";

    string[] InsusWords = "VISUAL STUDIO 2003,VISUAL STUDIO 2005,Microsoft SQL Server 2005,ASP.NET,ASP.NET 2.0,VB.NET,C#,AJAX,LINQ"
    .Replace("\\r", string.Empty)
    .Replace("\\n", string.Empty)
    .Replace(">br />", string.Empty)
    .Replace(",", string.Empty)
    .Replace("\\'", string.Empty)
    .Split(' ');

    foreach (string word in InsusWords)
    keywords.Content += word + ",";
    if (keywords.Content.ToString().Length > 1024)
    {
    keywords.Content = keywords.Content.Substring(0, keywords.Content.IndexOf(" ", 1024));
    }

    description.Content = "This web site use asp.net2.0 and C# and Ajax technology";
    if (description.Content.ToString().Length > 1024)
    {
    description.Content = description.Content.Substring(0, description.Content.IndexOf(" ", 1024));
    }

    htmlCtrl.Controls.Add(author);
    htmlCtrl.Controls.Add(copyright);
    htmlCtrl.Controls.Add(date);
    htmlCtrl.Controls.Add(keywords);
    htmlCtrl.Controls.Add(description);
    htmlCtrl.Controls.Add(robots);
    }

    #endregion PAGE HEAD

  • 相关阅读:
    常用dos命令
    最新Java校招面试题及答案
    计算机的基本组成及其工作原理
    java中的三大排序算法
    JSP九大内置对象的作用和用法总结
    java代码实现二叉树的遍历
    转发和重定向的区别
    解决中文乱码问题大全
    创建线程的三种方式对比
    Excel 不同文件、sheet 关联引用(vlookup函数)
  • 原文地址:https://www.cnblogs.com/hun_dan/p/1968300.html
Copyright © 2020-2023  润新知