That just seems backwards, why would you want a single grid to show different data at different times? You can easily write code to determine which out of several grids you wish to show at render time;
that seems like a much cleaner solution.

Well the Html.Grid extension method provided by the MVC.Controls library renders a grid using a GridControl object,
so you could solve your problem by either dynamically building the entire GridControl in the Controller and passing it to the view as part of the ViewData dictionary,
or very much like the example you posted, you could dynamically build a GridColumnModelList<T> in your controller (where each controller action will create a different GridColumnModel with different\same T) and pass it to the view using the ViewData dictionary,
or you could do something like the following inside the actual view: