title: Manually invoking ModelState validation
body: <p>I'm using ASP.NET MVC 3 code-first and I have added validation data annotations to my models.  Here's an example model:</p>
  
  <pre><code>public class Product
  {
      public int ProductId { get; set; }
  
      [Required(ErrorMessage = "Please enter a name")]
      public string Name { get; set; }
  
      [Required(ErrorMessage = "Please enter a description")]
      [DataType(DataType.MultilineText)]
      public string Description { get; set; }
  
      [Required(ErrorMessage = "Please provide a logo")]
      public string Logo { get; set; }
  }
  </code></pre>
  
  <p>In my website I have a multi-step process to create a new product - step 1 you enter product details, step 2 other information etc. Between each step I'm storing each object (i.e. a Product object) in the Session, so the user can go back to that stage of the process and amend the data they entered.</p>
  
  <p>On each screen I have client-side validation working with the new jQuery validation fine.</p>
  
  <p>The final stage is a confirm screen after which the product gets created in the database.  However because the user can jump between stages, I need to validate the objects (Product and some others) to check that they have completed the data correctly.</p>
  
  <p>Is there any way to programatically call the ModelState validation on an object that has data annotations?  I don't want to have to go through each property on the object and do manual validation.</p>
  
  <p>I'm open to suggestions of how to improve this process if it makes it easier to use the model validation features of ASP.NET MVC 3.</p>