下面是代码:
public virtual IHtmlString Meta() { AggregateHtmlString htmlStrings = new AggregateHtmlString(); var htmlMeta = this.PageContext.HtmlMeta; if (htmlMeta != null) { if (!string.IsNullOrEmpty(htmlMeta.Canonical)) { htmlStrings.Add(new HtmlString(string.Format("<link rel=\"canonical\" href=\"{0}\"/>", Kooboo.StringExtensions.StripAllTags(htmlMeta.Canonical)))); } if (!string.IsNullOrEmpty(htmlMeta.Author)) { htmlStrings.Add(BuildMeta("author", htmlMeta.Author)); } if (!string.IsNullOrEmpty(htmlMeta.Description)) { htmlStrings.Add(BuildMeta("description", htmlMeta.Description)); } if (!string.IsNullOrEmpty(htmlMeta.Keywords)) { htmlStrings.Add(BuildMeta("keywords", htmlMeta.Keywords)); } if (htmlMeta.Customs != null) { foreach (var item in htmlMeta.Customs) { htmlStrings.Add(BuildMeta(item.Key, item.Value)); } } if (!string.IsNullOrEmpty(htmlMeta.HtmlMetaBlock)) { htmlStrings.Add(new HtmlString(htmlMeta.HtmlMetaBlock)); } } return htmlStrings; } private static IHtmlString BuildMeta(string name, string value) { return new HtmlString(string.Format("<meta name=\"{0}\" content=\"{1}\" />", name, Kooboo.StringExtensions.StripAllTags(value))); }
其中的Aggregate的意思是聚合,是个生僻词。我还是觉得我们有必要了解一下AggregateHtmlString这个类吧。按F12进入定义,结果是DLL,搜索这个类名,得到如下代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; namespace Kooboo.CMS.Common { public class AggregateHtmlString : IHtmlString { List<IHtmlString> list; public AggregateHtmlString() : this(null) { } public AggregateHtmlString(IEnumerable<IHtmlString> htmlStrings) { if (htmlStrings != null) { list = new List<IHtmlString>(htmlStrings); } else { list = new List<IHtmlString>(); } } public IEnumerable<IHtmlString> HtmlStrings { get { return list; } } public void Add(IHtmlString htmlString) { list.Add(htmlString); } #region IHtmlString Members public string ToHtmlString() { StringBuilder sb = new StringBuilder(); foreach (var item in HtmlStrings) { if (item != null) { sb.Append(item.ToHtmlString()); } } return sb.ToString(); } #endregion public override string ToString() { return ToHtmlString(); } } }