title: DropDownList Selected Value is Set to "null" in the Model on POST action
body: <p>I wish to utilize the ASP.NET MVC convention to parse POSTed form submission to a model by <code>ActionResult MyAction(MyModel submitted)</code>. <code>MyModel</code> includes a property of the type that I defined -<code>UsState</code>-.
  <code>submitted.UsState</code> as the result of the action returns <code>null</code>. </p>
  
  <p>Is there any way to get the submitted to be set to proper value? </p>
  
  <p>I have the following view with a form in a <code>MyForm.cshtml</code></p>
  
  <pre><code>...
  @using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, ...))
  {
    @Html.DropDownList("States", 
      null, 
      new { @id = "state", @class = "form-control", @placeholder = "State"})
  }
  ...
  </code></pre>
  
  <p>with the controller</p>
  
  <pre><code>public class MyController : Controller
  {
      public ActionResult MyForm()
      {
          ViewBag.States = GetStatesList();
      }
  
      public ActionResult MyAction(MyModel info) //info.State is set to null on POST
      {
          return View();
      }
      private static List&lt;SelectListItem&gt; GetStatesList()
      {
          var states = new List&lt;SelectListItem&gt;();
          states.Add(new SelectListItem { Value = "", Selected = true, Text = "State" });
          foreach (var s in UsStates.ToList())
          {
              var state = new SelectListItem { Value = s.Abbreviation, Text = s.Name, Disabled = !s.Available };
              states.Add(state);
          }
          return states;
      }
  
  }
  </code></pre>
  
  <p>with the model </p>
  
  <pre><code>public class MyModel
  {
      public UsState States { get; set; } //Do I need proper setter for it to work? 
  }
  public static class UsStates  //Should I get the UsStates in a different way? 
  {
      private static List&lt;UsState&gt; states = new List&lt;UsState&gt; {
          new UsState("AL", "Alabama"),
          //...
      }
      public static List&lt;UsState&gt; ToList()
      { return states; }
  }
  
  public class UsState
  {
      public UsState(string ab, string name, bool available = true)
      {
          Name = name;
          Abbreviation = ab;
          Available = available;
      }
  }
  </code></pre>