2012-04-05 4 views
0

Das ist meine VMkann nicht MVC3 DDL SelectedValue an die Arbeit

public class CountriesViewModel 
    { 
     public string CurrentCountry { get; set; } 
     public IEnumerable<Country> Countries { get; set; } 
    } 

Mit meinem Controller-

public class FiltersController : Controller 
    { 
     public ActionResult _ShipToCountry(IEnumerable<Country> countries, 
              string currentCountry = "AE") 
     { 
      var viewModel = new CountriesViewModel 
      { 
       Countries = countries.OrderBy(x => x.Name), 
       CurrentCountry = currentCountry 
      }; 

      return PartialView(viewModel); 
     } 
    } 

Und schließlich der Ansicht

@Html.DropDownListFor(x => x.Countries, 
         new SelectList(Model.Countries.ToList(), 
            "Code", "Name", Model.CurrentCountry)) 

Wo Model.CurrentCountry das ist Code.

Die DDL gemacht wird richtig

... 
<option value="UA">Ukraine</option> 
<option value="AE">United Arab Emirates</option> 
<option value="UK">United Kingdom</option> 
.... 

Aber kein Land ausgewählt wird, was bin ich dabei?

+1

@kooshka ... sieht gut aus. Sind Sie sicher, dass "AE" in der "Code" -Liste für Länder steht – MikeTWebb

+0

"AE" ist nur der Standard ist es auf der Liste sicher. Aber jeder andere Ländercode, der übergeben wird, und es wird übergeben ich kann es beim Debuggen sehen, wählt immer noch nicht die DDL – kooshka

Antwort

1

Sie CurrentCountry prop zum Ausdruck gesetzt sollte, wenn nicht auch Sie nicht das ausgewählte Land auf Formular erhalten.

@Html.DropDownListFor(x => x.CurrentCountry, 
         new SelectList(Model.Countries.ToList(), "Code", "Name")) 
+0

Sie haben Recht, danke! – kooshka

0

Dies funktionierte ...

Statt

@Html.DropDownListFor(x => x.Countries, 
         new SelectList(Model.Countries.ToList(), 
            "Code", "Name", Model.CurrentCountry)) 

Gebrauchte
@Html.DropDownList(Model.CurrentCountry, 
        new SelectList(Model.Countries.ToList(), 
            "Code", "Name", Model.CurrentCountry))