J'ai des problèmes avec DropDownListFor
mon application MVC3. J'ai pu utiliser StackOverflow pour comprendre comment les faire apparaître sur la vue, mais maintenant je ne sais pas comment capturer les valeurs dans ses propriétés correspondantes sur le modèle de vue lorsqu'il est soumis. Pour que cela fonctionne, je devais créer une classe interne qui avait un ID et une propriété de valeur, puis je devais utiliser un IEnumerable<Contrib>
pour satisfaire les DropDownListFor
exigences des paramètres. Maintenant, cependant, comment MVC FW est-il censé mapper la valeur sélectionnée dans cette liste déroulante dans la propriété de chaîne simple sur mon modèle de vue?
public class MyViewModelClass
{
public class Contrib
{
public int ContribId { get; set; }
public string Value { get; set; }
}
public IEnumerable<Contrib> ContribTypeOptions =
new List<Contrib>
{
new Contrib {ContribId = 0, Value = "Payroll Deduction"},
new Contrib {ContribId = 1, Value = "Bill Me"}
};
[DisplayName("Contribution Type")]
public string ContribType { get; set; }
}
Dans ma vue, je place le menu déroulant sur la page comme ceci:
<div class="editor-label">
@Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId,
new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
</div>
Lorsque je soumets le formulaire, le formulaire ContribType
est (bien sûr) nul.
Quelle est la bonne façon de procéder?