The previous List.aspx view implementations we wrote will continue to work with our updated ProductsController - no code changes required.  This is because when a strongly typed ViewData object is passed to a View that derives from ViewPage, the ViewData dictionary will automatically use reflection against the properties of the strongly typed object to lookup values.  So code in our view like below:

 

Below is an example of how we could use the and server controls to implement our HTML UI.  This is the exact same markup that we used when our List.aspx page derived from ViewPage: