Paramètre Valeur par Défaut en Html.DropDownList Helper

J'ai cherché mais n'ont pas réussi à obtenir une valeur par défaut sélectionnée dans une liste déroulante.

La propriété suivante ne réside pas dans mon projet MVC, il est dans mon Cœur. Par conséquent, je n'avais pas envie de référence du Système.Web.Mvc et utilisé un Dictionnaire au lieu.

    [Display(Name = "Time Zone")]
    public int TimeZone { get; set; }
    public Dictionary<string, string> TimeZoneOptions
    {
        get
        {
            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add("(GMT -10:00) Hawaii", "-10");
            d.Add("(GMT -9:00) Alaska", "-9");
            d.Add("(GMT -8:00) Pacific Time", "-8");
            d.Add("(GMT -7:00) Mountain Time", "-7");
            d.Add("(GMT -6:00) Central Time", "-6");
            d.Add("(GMT -5:00) Eastern Time", "-5");
            d.Add("Unknown", "0");
            return d;
        }
    }

J'ai créé un CreateViewModel dans mon projet MVC pour que je puisse convertir le au-dessus de Dictionnaire dans un SelectList avec un présélectionnés valeur par Défaut.

    public class CreateViewModel
{
    public SelectList GetUserTimeZoneList(string selectedValue)
    {
        return new SelectList(new BankUser().TimeZoneOptions, "Value", "Key", selectedValue);
    }
}

Mon point de vue (notez le "-7" comme la valeur par défaut étant passé)

    <div class="form-group">
        @Html.LabelFor(model => model.TimeZone, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.TimeZone, new CreateViewModel().GetUserTimeZoneList("-7"), new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.TimeZone)
        </div>
    </div>

Les Résultats

    <select class="form-control" data-val="true" data-val-number="The field Time Zone must be a number." data-val-required="The Time Zone field is required." id="TimeZone" name="TimeZone">
<option value="-10">(GMT -10:00) Hawaii</option>
<option value="-9">(GMT -9:00) Alaska</option>
<option value="-8">(GMT -8:00) Pacific Time</option>
<option value="-7">(GMT -7:00) Mountain Time</option>
<option value="-6">(GMT -6:00) Central Time</option>
<option value="-5">(GMT -5:00) Eastern Time</option>
<option selected="selected" value="0">Unknown</option>
</select>

Comme vous pouvez le voir, la "Montagne" n'a pas été sélectionné. Il sélectionne toujours "Inconnu". Tous les conseils sur ce que je fais de mal?

OriginalL'auteur FrankO | 2014-01-31