title: Simple ViewModel property loses values on form submit
body: <p>I have a very simple example I am trying to create. On a button click, I am trying to increment a number in the view model, that's it. The entirety of the code is here:</p>
  
  <p>View Model</p>
  
  <pre><code>public class CustomerOverallViewModel
  {
      public int currentState { get; set; }
  }
  </code></pre>
  
  <p>Controller</p>
  
  <pre><code>public class WorkflowController : Controller
  {
      public ActionResult Index()
      {
          CustomerOverallViewModel viewModel = new CustomerOverallViewModel();
          viewModel.currentState = 0;
  
          return View(viewModel);
      }
  
      [HttpPost]
      public ActionResult Index(CustomerOverallViewModel viewModel)
      {
          viewModel.currentState++;
  
          return View(viewModel);
      }
  }
  </code></pre>
  
  <p>View</p>
  
  <pre><code>@model AgentWebsite.ViewModels.CustomerOverallViewModel
  
  @{
      ViewBag.Title = "Index";
      Layout = "~/Views/Shared/_Layout.cshtml";
  }
  
  &lt;h2&gt;Index&lt;/h2&gt;
  
  @using (Html.BeginForm())
  {
      &lt;div&gt;
          called from the WorkflowController -&gt; Index method
  
          @Html.HiddenFor(m =&gt; m.currentState)
  
          &lt;input type="submit" class="btn btn-success" value="Back" /&gt;
          &lt;input type="submit" class="btn btn-success" value="Next" /&gt;
      &lt;/div&gt;
  }
  </code></pre>
  
  <p>When I click the buttons, <code>currentState</code> is always being reset, no matter what. What am I missing? How can I use variables that are not on the page?</p>