[ControlBuilder (typeof(HtmlHeadBuilder))]
public sealed class HtmlHead: HtmlGenericControl, IParserAccessor
{
-#if NET_4_0
string descriptionText;
string keywordsText;
HtmlMeta descriptionMeta;
HtmlMeta keywordsMeta;
-#endif
string titleText;
HtmlTitle title;
//Hashtable metadata;
protected internal override void RenderChildren (HtmlTextWriter writer)
{
- EnsureTitleControl ();
-
base.RenderChildren (writer);
-// if (metadata != null) {
-// foreach (DictionaryEntry entry in metadata) {
-// writer.AddAttribute ("name", entry.Key.ToString ());
-// writer.AddAttribute ("content", entry.Value.ToString ());
-// writer.RenderBeginTag (HtmlTextWriterTag.Meta);
-// writer.RenderEndTag ();
-// }
-// }
-
+ if (title == null) {
+ writer.RenderBeginTag (HtmlTextWriterTag.Title);
+ if (!String.IsNullOrEmpty (titleText))
+ writer.Write (titleText);
+ writer.RenderEndTag ();
+ }
+ if (descriptionMeta == null && descriptionText != null) {
+ writer.AddAttribute ("name", "description");
+ writer.AddAttribute ("content", HttpUtility.HtmlAttributeEncode (descriptionText));
+ writer.RenderBeginTag (HtmlTextWriterTag.Meta);
+ writer.RenderEndTag ();
+ }
+
+ if (keywordsMeta == null && keywordsText != null) {
+ writer.AddAttribute ("name", "keywords");
+ writer.AddAttribute ("content", HttpUtility.HtmlAttributeEncode (keywordsText));
+ writer.RenderBeginTag (HtmlTextWriterTag.Meta);
+ writer.RenderEndTag ();
+ }
if (styleSheet != null)
styleSheet.Render (writer);
}
title = t;
}
-#if NET_4_0
HtmlMeta meta = control as HtmlMeta;
if (meta != null) {
if (String.Compare ("keywords", meta.Name, StringComparison.OrdinalIgnoreCase) == 0)
else if (String.Compare ("description", meta.Name, StringComparison.OrdinalIgnoreCase) == 0)
descriptionMeta = meta;
}
-#endif
base.AddedControl (control, index);
}
if (title == control)
title = null;
-#if NET_4_0
if (keywordsMeta == control)
keywordsMeta = null;
else if (descriptionMeta == control)
descriptionMeta = null;
-#endif
base.RemovedControl (control);
}
-
- void EnsureTitleControl () {
- if (title != null)
- return;
-
- HtmlTitle t = new HtmlTitle ();
- t.Text = titleText;
- Controls.Add (t);
- }
-
-// IList LinkedStyleSheets {
-// get {
-// if (styleSheets == null) styleSheets = new ArrayList ();
-// return styleSheets;
-// }
-// }
-//
-// IDictionary Metadata {
-// get {
-// if (metadata == null) metadata = new Hashtable ();
-// return metadata;
-// }
-// }
-
-#if NET_4_0
public string Description {
get {
if (descriptionMeta != null)
keywordsText = value;
}
}
-#endif
public IStyleSheet StyleSheet {
get {