title: Required attribute not appearing in error list when using IValidatableObject
body: <p>I've got a class that has <code>[Required]</code> decorations on some attributes, but also needs some custom validation, so it uses <code>IValidatableObject</code>.</p>
  
  <h2>Class</h2>
  
  <pre><code>public class ModelCourse : IValidatableObject
  {
      //some other code...
  
      [DisplayName("Course Name")]
      [Required]
      [StringLength(100, MinimumLength=1)]
      public String name { get; set; }
  
      //more code...
  
      public IEnumerable&lt;ValidationResult&gt; Validate(ValidationContext validationContext)
      {
          if (courseGradeLevels == null || courseGradeLevels.Count &lt; 1)
          {
              yield return new ValidationResult("You must select at least one grade level.");
          }
          if ((courseLength == CourseLength.Other) &amp;&amp; string.IsNullOrEmpty(courseLengthDescription))
          {
              yield return new ValidationResult("Course Length Description is Required if Length is Other.");
          }
      }
  }
  </code></pre>
  
  <h2>Validation</h2>
  
  <pre><code>        //course is one of a few child objects in this class
          bool dbDetailsValid = TryValidateModel(dbDetails);
  
          ViewData["courseValid"] = !ModelState.ContainsKey("course");
  
          foreach(KeyValuePair&lt;string, ModelState&gt; pair in ModelState.Where(x =&gt; x.Value.Errors.Count &gt; 0))
          {
              ViewData[pair.Key + "ErrorList"] = pair.Value.Errors.ToList();
          }
  </code></pre>
  
  <p>When I run this code, a blank string for <code>name</code> doesn't result in an error in <code>ModelState</code>. The custom validation logic works as expected, but I don't get why <code>TryValidateModel</code> isn't picking up on the decorations... is my only option to manually check each required field?</p>