Q:

Selected value missed if use model in DropDownListFor()

I am having trouble this DropDownListFor()
I have test controller: 
model.COUNTRYNAME = "Swizerland";
        ViewBag.Selecter = new SelectList(new[]  
        { 
            new SelectListItem { Text = "USA", Value = "USA" }, 
            new SelectListItem { Text = "Swizerland", Value = "Swizerland", Selected =true}, 
             new SelectListItem { Text = "Russia", Value = "Russia" }, 

        }, "Text", "Value", model.COUNTRYNAME);

in View
@Html.DropDownListFor(x => Model.COUNTRYNAME , (SelectList)ViewBag.Selecter)

The DropDownListFor does not have select value, it always select first value.
What is wrong? 
If i use DropDownList
@Html.DropDownList("COUNTRYNAME" , (SelectList)ViewBag.Selecter)

It also don't work.
But if I use
@Html.DropDownListFor("AAAAAAA" , (SelectList)ViewBag.Selecter)

It's work fine and select 2nd value! What happens? I don't understand.
Thanks

A:

Try like this:
model.COUNTRYNAME = "Swizeland";
ViewBag.Selecter = new[]  
{ 
    new SelectListItem { Text = "USA", Value = "USA" }, 
    new SelectListItem { Text = "Swizeland", Value = "Swizeland" },
    new SelectListItem { Text = "Russia", Value = "Russia" }, 
};
return View(model);

and in the view:
@Html.DropDownListFor(
    x => x.COUNTRYNAME, 
    (IEnumerable<SelectListItem>)ViewBag.Selecter
)

but a better way is to use a view model:
model.SelectedCountry = "Swizeland";
model.Countries = new[]  
{ 
    new SelectListItem { Text = "USA", Value = "USA" }, 
    new SelectListItem { Text = "Swizeland", Value = "Swizeland" },
    new SelectListItem { Text = "Russia", Value = "Russia" }, 
};
return View(model);

and in the view:
@Html.DropDownListFor(x => x.SelectedCountry, Model.Countries)

