diff --git a/src/posts/TableAutoGenerator.md b/src/posts/TableAutoGenerator.md
new file mode 100644
index 0000000..d3546d3
--- /dev/null
+++ b/src/posts/TableAutoGenerator.md
@@ -0,0 +1,138 @@
+---
+title: ASP.NET Core Table Generator
+description: A tag helper that takes a list and generates a table
+tags: [ Programming, C#, ASP.NET Core ]
+---
+
+This tag helper takes any `IEnumerable` and will use reflection to generate a table for it. This will pick up on attributes in the model for customizing the output.
+
+## How To Use
+
+The model in the `IEnumerable`:
+
+```csharp
+public class Thing
+{
+ // Don't make a column for this property
+ [Display(AutoGenerateField = false)]
+ public int ThingId { get; set; }
+
+ // Use "Thing Name" for the column header instead of "ThingName"
+ [Display(Name = "Thing Name")]
+ public string ThingName { get; set; }
+
+ // Use string.Format with the DataFormatString
+ [DisplayFormat(DataFormatString = "{0:C}")]
+ public decimal Price { get; set; }
+}
+```
+
+Then use the tag helper in the view:
+
+```cshtml
+
+```
+
+## Code
+
+The tag helper:
+
+```csharp
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc.ViewFeatures;
+using Microsoft.AspNetCore.Razor.TagHelpers;
+using System.ComponentModel.DataAnnotations;
+using System.Reflection;
+
+///
+/// When the is a list, fill the table with the list data with
+/// columns for each property.
+///
+/// Properties can be hidden from the table by adding [Diaplay(AutoGenerateField = false)]
+///
+///
+/// The column heading for each property is the property name by default. This can be overriden by
+/// adding [Display(Name = "Property Name")]
+///
+///
+[HtmlTargetElement("table", Attributes = "asp-for")]
+public class TableTagHelper : TagHelper
+{
+ [HtmlAttributeName("asp-for")]
+ public ModelExpression For { get; set; }
+
+ public override void Process(TagHelperContext context, TagHelperOutput output)
+ {
+ var modelType = this.For.ModelExplorer.ModelType.GenericTypeArguments[0];
+ var list = this.For.Model as IEnumerable