title: Html.DropDownListFor doesn't select correct value
body: <p>Generating a Selectlist (IEnumerable) from a XML file with countries, using this with DropDownListFor does not set the selected value supplied in the Model??</p>
  
  <pre><code>public static IEnumerable&lt;SelectListItem&gt; CountrySelectList()
      {
          var sRetVal = new List&lt;SelectListItem&gt;();
          string CachKey = "MVCXMLCountryList" + GetCulture();
          if (HttpContext.Current.Cache[CachKey] == null | 1 == 1)
          {
              string xmlFile = Path.Combine(HttpContext.Current.Server.MapPath("~"),      "Countries.xml");
  
              XmlDocument Doc = new XmlDocument();
              Doc.Load(xmlFile);
              foreach (XmlNode Node in    Doc.SelectNodes(String.Format("//Countries/language[@iso=\"{0}\"]/country", GetCulture())))
              {
                  var tmpSelect = new SelectListItem();
                  tmpSelect.Value = Node.Attributes["iso2"].InnerText.ToString();
                  tmpSelect.Text = Node.Attributes["name"].InnerText;
                  tmpSelect.Selected = false;
                  sRetVal.Add(tmpSelect);
              }
              sRetVal.Sort(CountrySort);
              var prioritet = new string[] {"de","fo","se","no","dk"};
              switch (GetCulture())
              {
                  case "dk": prioritet = new string[] {"de","fo","se","no","dk"}; break;
                  default: prioritet = new string[] { "de", "se", "no", "dk", "gb" }; break;
              }
  
                  foreach (string Country in (string[])prioritet)
                  {
                      selectedCountry = Country;
                      var tmpSel = sRetVal.Find(FindCurrentSelected);
                      sRetVal.RemoveAt(sRetVal.FindIndex(FindCurrentSelected));
                      sRetVal.Insert(0, tmpSel);
                  }
                  //sRetVal[10].Selected = true;
              HttpContext.Current.Cache[CachKey] = sRetVal;
          }
          else
          {
              sRetVal = (List&lt;SelectListItem&gt;)HttpContext.Current.Cache[CachKey];
          }
          return (IEnumerable&lt;SelectListItem&gt;) sRetVal;
      }
  </code></pre>
  
  <p>Have tried both:</p>
  
  <pre><code>@Html.DropDownListFor(model =&gt; model.Country, new SelectList(CommonHelpers.CountrySelectList(), "Value", "Text", Model.Country), "---Select---")
  </code></pre>
  
  <p>and </p>
  
  <pre><code>@Html.DropDownListFor(model =&gt; model.Country, CommonHelpers.CountrySelectList(), "---Select---")
  </code></pre>
  
  <p>any idears?</p>