Como preencher uma lista suspensa do banco de dados no ASP.NET MVC 4
Como o título diz que eu estou procurando por alguma ajuda nessa tarefa, eu li muitos tutoriais sobre isso, mas nenhum deles pode resolver o meu problema que é como carregar umdropdownlistfor
do banco de dados. De longe, eu tenho o seguinte código:
**LNClientes():**
public List<ENDistrito> DistritoListar()
{
return new ADClientes().DistritoListar();
}
**ADClientes():**
public List<ENDistrito> DistritoListar()
{
Database oDatabase = DatabaseFactory.CreateDatabase(ConfigurationManager.AppSettings["conexionBD"]);
DbCommand odbcommand = oDatabase.GetStoredProcCommand("USP_SEL_DISTRITOS");
List<ENDistrito> lista = new List<ENDistrito>();
using (IDataReader reader = oDatabase.ExecuteReader(odbcommand))
{
while (reader.Read())
lista.Add(new ENDistrito(reader));
}
return lista;
}
**Controller:**
public ActionResult Registrar()
{
ViewBag.Message = Resources.Language.Title_Page_MC_C;
var ListaDistrito = new LNClientes().DistritoListar();
ViewBag.ObtenerDistrito = new SelectList(ListaDistrito, "IdDistrito", "DescripcionDistrito");
return View();
}
Visão:
<div class="editor-field">
@Html.EditorFor(model => model.DistritoCliente)
@Html.DropDownListFor(model => model.DistritoCliente,(SelectList)ViewBag.ObtenerDistrito,"--Seleccione--")
@Html.ValidationMessageFor(model => model.DistritoCliente)
</div>
Até este ponto tudo está bem, quando abro essa formadropdownlistfor
funciona, mas quando eu envio o formulário eu recebi a seguinte mensagem:
Não existe um item ViewData do tipo 'IEnumerable' que possua a chave 'DistritoCliente'.
Alguma idéia do que estou fazendo errado ou como eu poderia resolver esse problema.
Desde já, obrigado.
Alex