Kooboo CMS

首先我们找到这个类。

这个类有如下的方法:

 #region Title & meta
        [Obsolete("Use HtmlTitle")]
        public IHtmlString Title()
        {
            return HtmlTitle();
        }
        /// <summary>
        /// HTMLs the title.
        /// </summary>
        /// <returns></returns>
        public virtual IHtmlString HtmlTitle()
        {
            return HtmlTitle(null);
        }
        /// <summary>
        /// HTMLs the title.
        /// </summary>
        /// <param name="defaultTitle">The HTML title.</param>
        /// <returns></returns>
        public virtual IHtmlString HtmlTitle(string defaultTitle)
        {
            var title = string.IsNullOrEmpty(this.PageContext.HtmlMeta.HtmlTitle) ? defaultTitle : this.PageContext.HtmlMeta.HtmlTitle;
            if (!string.IsNullOrEmpty(title))
            {
                return new HtmlString(string.Format("<title>{0}</title>", Kooboo.StringExtensions.StripAllTags(title)));
            }
            return new HtmlString("");
        }
View Code

其实我觉得大家有必要了解下IHtmlString这个接口。

这个接口不是出自于CMS,而是系统内定义的。

using System;

namespace System.Web
{
    // 摘要: 
    //     表示不应再次进行编码的 HTML 编码的字符串。
    public interface IHtmlString
    {
        // 摘要: 
        //     返回 HTML 编码的字符串。
        //
        // 返回结果: 
        //     HTML 编码的字符串。
        string ToHtmlString();
    }
}

  关于这个接口的详细介绍我在网上也搜了一个,是MSDN上面的。不知道谁还有更详细的资料?

下面是里面的最重要的一个方法:

        public virtual IHtmlString HtmlTitle(string defaultTitle)
        {


            var title = string.IsNullOrEmpty(this.PageContext.HtmlMeta.HtmlTitle) ? defaultTitle : this.PageContext.HtmlMeta.HtmlTitle;
            if (!string.IsNullOrEmpty(title))
            {
                return new HtmlString(string.Format("<title>{0}</title>", Kooboo.StringExtensions.StripAllTags(title)));
            }
            return new HtmlString("");
        }

  上面的代码的意思是,如果当前上下文HtmlMeta.HtmlTitle为空,那么就取带入的标题。但是如果defaultTitle和HtmlMeta.HtmlTitle都为空的话,那么就返回空字符串。否则执行<title>{0}</title>.

原文地址:https://www.cnblogs.com/kmsfan/p/Kooboo-CMS-Html-FrontHtml-HtmlTitle.html