/// <summary> /// Converts AgilityContentItem into a dynamic ExpandoObject so additional properties can be added easily. Sets a "Key" field use in the frontend. Defaults to "ContentID". /// </summary> /// <param name="o"></param> /// <returns></returns> public static dynamic ToFrontendProps(this AgilityContentItem ci, string keyField = "ContentID") { //convert to expando object var o = ci.ToDynamic(removeHrefTilde: true) as IDictionary <string, Object>; //set a key if we can SetKey(o, keyField); //remove unwanted props IgnoreProps(o); return(o); }