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
Vous devez vous connecter pour publier un commentaire.
Il semble j'ai négligé un aspect important de la DropDownListFor helper. Le premier paramètre de contrôle est en fait la valeur qui sera sélectionnée par défaut.
Alors quand j'ai passer le modèle de la vue, il devrait être prérempli avec la bonne valeur par défaut comme ceci:
Donc, je n'ai plus besoin de l'original de CreateViewModel classe.
OriginalL'auteur FrankO
Lorsque vous utilisez
Html.DropDownListFor
vous êtes à la substitution de la valeur sélectionnée. Si vous voulez -7 comme la sélection par défaut (comme un formulaire créer) remplir la valeur de Modèle.Le fuseau horaire à -7 par défaut. Optionnellement, vous pouvez utiliser leHtml.DropDownList
fonction.Bien sûr, alors vous perdez la valeur de Fuseau horaire sur un formulaire d'édition.
OriginalL'auteur nickles80