title: ASP.NET MVC - what's the equivalent of ViewState
body: <p>I have an existing web-forms website that runs on a web-farm (multiple web servers, each request is NON-sticky).</p>
  
  <p>One of the tasks is to retrieve a lot of data from a 3rd party webservice.  This is an expensive process (in terms of time taken to respond).  The optimal solution has been to initially grab all the data and stick it in the page's ViewState (as a List&lt;Product&gt;.  We then have a grid that allows us to page through this list of products.  For each request for the next page we don't have to re-visit the slow web service because we've already cached the data in the ViewState.</p>
  
  <p>So, how would I accomplish this using MVC?  If I were using classic ASP, I would serialize the list and hold it in a hidden field in the form.</p>
  
  <p>But what is the preferred approach when using MVC?  As mentioned, I'm using non-sticky sessions so can't rely upon caching on the server.</p>
  
  <p>If I am to hold it in a hidden-field, then is it sensible to compress the data first (zip) to reduce the size of the page?  Again, what's "best practice" here?</p>
  
  <p>Many thanks for any/all advice</p>
  
  <p>Griff</p>
  
  <p><strong>PS</strong> - I know there are similar posts out there (e.g. <a href="https://stackoverflow.com/questions/1473483/asp-net-mvc-and-viewstate">ASP.NET MVC and ViewState</a>), but they don't quite provide the detail I require.</p>