Estou tendo problemas com DropDownListFor
meu aplicativo MVC3. Consegui usar StackOverflow para descobrir como fazer com que eles apareçam no View, mas agora não sei como capturar os valores em suas propriedades correspondentes no View Model quando ele é enviado. Para fazer isso funcionar, tive que criar uma classe interna que tinha um ID e uma propriedade de valor, então tive que usar um IEnumerable<Contrib>
para satisfazer os DropDownListFor
requisitos de parâmetro. Agora, entretanto, como MVC FW deve mapear o valor que é selecionado neste menu suspenso de volta para a propriedade de string simples em meu modelo de visualização?
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; }
}
Na minha Visualização, coloco o menu suspenso na página assim:
<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>
Quando eu envio o formulário, ContribType
é (claro) nulo.
Qual é a maneira correta de fazer isso?