public override string Render(int depthLimit, int currentDepth) { var rowDataSb = new StringBuilder(); if (base.Metadata.IsEnumerable) { // check the collection to see if it's all strongly typed, or all primitives so the columns can be built. foreach (var item in (IEnumerable)this.Metadata.SourceObject) { rowDataSb.Append("<tr>"); var renderedValue = ValueDisplay.DisplayValue(item, depthLimit, currentDepth); var newTag = HtmlTag.WrapValue("td", renderedValue); rowDataSb.Append(newTag); rowDataSb.Append("</tr>"); } } else { throw new InvalidOperationException( "Cannot render rows for a type which does not implement IEnumerable."); } return(rowDataSb.ToString()); }
public override string Render(int depthLimit, int currentDepth) { var rowDataSb = new StringBuilder(); foreach (var propertyInfo in this.Metadata.Properties) { rowDataSb.Append("<tr>"); rowDataSb.AppendFormat( "<th class='member' title='{0}'>{1}</th>", propertyInfo.MemberType, propertyInfo.Name); object value = propertyInfo.GetValue(this.Metadata.SourceObject); var displayValue = ValueDisplay.DisplayValue(value, depthLimit, currentDepth); rowDataSb.Append(HtmlTag.WrapValue("td", displayValue)); rowDataSb.Append("</tr>"); } return(rowDataSb.ToString()); }