Getting the PageTitle
Getting the PageTitle of a page should be just a property away would you think. I would call Page.Title to get the title of the current page.
Unfortunately Page.Title contains “\r\n ” and the title of the page is in a new line, like this:
<title> RH Test </title>
The property will only return the first row, which is not very helpful 🙁
So what can we do? Since the title is set through a control within a ContentPlacehoder, my way was to get the control and take the value from it. And… it worked. An extension method will traverse all controls, to find the desired one.
public string GetPageTitle() { var literal = Page.Header.FindControlsOfType<ContentPlaceHolder>().Single(p => p.ID == "PlaceHolderPageTitle").FindControlsOfType<EncodedLiteral>().FirstOrDefault(); if (literal != null) { string pageTitle = literal.Text; return pageTitle; } return null; } // and an extension method (need to go to a static class! public static IEnumerable<T> FindControlsOfType<T>(this Control control) where T : Control { foreach (Control child in control.Controls) { if (child is T) { yield return (T)child; } else { foreach (T grandChild in child.FindControlsOfType<T>()) { yield return grandChild; } } } }
Page.Title, I got you 😉