title: DropDownList Validation - ModelState.IsValid is always false
body: <p>I try to create a asp.net mvc 2 application. 
  My DropDownList won't be validated!</p>
  
  <p>I have a core model class called Animal with some attributes and the same for the class Genus. These classes are mapped to nHibernate.</p>
  
  <pre><code>
  namespace Core.Models
  {
      public class Animal
      {
          public Animal() { }
  
          public virtual int AnimalId { get; set; }
  
          [DisplayName("Name")]
          [Required(AllowEmptyStrings = false, ErrorMessage = "Name is required")]
          public virtual string Name { get; set; }
  
          [DisplayName("Gattung")]
          [Required(ErrorMessage = "Genus is required")]
          public virtual Genus Genus { get; set; }
      }
  }
  namespace Core.Models
  {
      public class Genus
      {
          public Genus() { }
  
          public virtual int GenusId { get; set; }
  
          [DisplayName("Name")]
          public virtual string GenusTitle { get; set; }
      }
  }
  </code>
  </pre>
  
  <p>In my UI Project I have a ViewModel class called AnimalViewModel</p>
  
  <pre>
  <code>
     public class AnimalViewModel
     {
          public Animal Animal { get; set; }
          public string ReturnUrl { get; set; }
  
          public IList Genus { get; set; }
  
          public AnimalViewModel(Animal a, string returnUrl)
          {
              this.Animal = a;
              this.ReturnUrl = returnUrl;            
          }
  
          public AnimalViewModel() { }
      }
  </code>
  </pre>
  
  <p>Here's my view:</p>
  
  <pre>
  <code>
   model.Animal.Genus, new SelectList(Model.Genus, "GenusId", "GenusTitle"), "-- Fill out --")%>
  </code>
  </pre>
  
  <p>And finally my Controller:</p>
  
  <pre>
  <code>
          public ActionResult Index(string returnUrl)
          {
              AnimalViewModel avm = new AnimalViewModel()
              {
                  Animal = new Animal(),
                  ReturnUrl = returnUrl,
                  Genus = GenusRepository().GetAll()
              };
              return View(avm);
          }
          [HttpPost]
          public ActionResult Index(AnimalViewModel avm)
          {
              if (ModelState.IsValid) //is always false
              {
                  //save
                  return RedirectToAction("Overview");
              }
              else
              {
                  Genus = GenusRepository().GetAll();
                  return View(avm);
              }
          }
  </code>
  </pre>
  
  <p>ModelState.IsValid is always false. I have no idea what's wrong.
  The client validation works but the server validation doesn't. </p>
  
  <p>Any help would be appreciated.</p>
  
  <p>thanks!</p>