private void HandleOpenTag(Stack <Control> container, HtmlChunk chunk, StringBuilder currentLiteralText) { if (chunk.TagName.Equals("title", StringComparison.OrdinalIgnoreCase) && isCurrentlyInHeadTag) { // if we are not currently parsing the <head> tag, then this title must be in the body and we should skip it this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); var title = new HtmlTitle(); container.Peek().Controls.Add(title); container.Push(title); } else if (chunk.TagName.Equals("head", StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); var head = new HtmlHead(); container.Peek().Controls.Add(head); container.Push(head); isCurrentlyInHeadTag = true; } else if (chunk.TagName.Equals("asp:ContentPlaceHolder", StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); if (chunk.HasAttribute("ID")) { var id = chunk.AttributesMap["ID"] as string; var placeHolder = new ContentPlaceHolder() { ID = id }; container.Peek().Controls.Add(placeHolder); this.AddContentPlaceHolder(id); this.InstantiateControls(placeHolder); } } else if (chunk.TagName.Equals("form", StringComparison.OrdinalIgnoreCase) && chunk.HasAttribute("runat")) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); var form = new HtmlForm(); if (chunk.HasAttribute("id")) { form.ID = chunk.AttributesMap["id"] as string; } else { form.ID = "aspnetForm"; } container.Peek().Controls.Add(form); container.Push(form); } else if (chunk.TagName.Equals(LayoutsHelpers.SectionTag, StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); var sectionRenderer = new SectionRenderer(); if (chunk.HasAttribute("name")) { sectionRenderer.Name = chunk.AttributesMap["name"].ToString(); } container.Peek().Controls.Add(sectionRenderer); } else if (chunk.TagName.Equals("meta", StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); this.AddIfNotEmpty(chunk.Html, container.Peek()); } else if (chunk.TagName == "%@") { //// Ignore } else { currentLiteralText.Append(chunk.Html); } }
private void HandleOpenTag(Stack<Control> container, HtmlChunk chunk, StringBuilder currentLiteralText) { if (chunk.TagName.Equals("title", StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); var title = new HtmlTitle(); container.Peek().Controls.Add(title); container.Push(title); } else if (chunk.TagName.Equals("head", StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); var head = new HtmlHead(); container.Peek().Controls.Add(head); container.Push(head); } else if (chunk.TagName.Equals("asp:ContentPlaceHolder", StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); if (chunk.HasAttribute("ID")) { var id = chunk.AttributesMap["ID"] as string; var placeHolder = new ContentPlaceHolder() { ID = id }; container.Peek().Controls.Add(placeHolder); this.AddContentPlaceHolder(id); this.InstantiateControls(placeHolder); } } else if (chunk.TagName.Equals("form", StringComparison.OrdinalIgnoreCase) && chunk.HasAttribute("runat")) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); var form = new HtmlForm(); if (chunk.HasAttribute("id")) form.ID = chunk.AttributesMap["id"] as string; else form.ID = "aspnetForm"; container.Peek().Controls.Add(form); container.Push(form); } else if (chunk.TagName.Equals(LayoutsHelpers.SectionTag, StringComparison.OrdinalIgnoreCase)) { this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); currentLiteralText.Clear(); var sectionRenderer = new SectionRenderer(); if (chunk.HasAttribute("name")) { sectionRenderer.Name = chunk.AttributesMap["name"].ToString(); } container.Peek().Controls.Add(sectionRenderer); } else if (chunk.TagName == "%@") { //// Ignore } else { currentLiteralText.Append(chunk.Html); } }