As the title says I'm looking for some help in that task, I've read many tutorials about it but none of them can solved my problem which is how to load a dropdownlistfor
from database. By far, I got the following code:
**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();
}
View:
<div class="editor-field">
@Html.EditorFor(model => model.DistritoCliente)
@Html.DropDownListFor(model => model.DistritoCliente,(SelectList)ViewBag.ObtenerDistrito,"--Seleccione--")
@Html.ValidationMessageFor(model => model.DistritoCliente)
</div>
Till this point everything is ok, when i open that form the dropdownlistfor
works but when i submit the form i got the following message:
There is no ViewData item of type 'IEnumerable' that has the key 'DistritoCliente'.
Any idea on what I'm doing wrong or how could i solve this problem.
Thanks in advance.
Alex
How I commonly build my dropdowns are like this
@Html.DropDownListFor(x => x.Field, PathToController.GetDropDown())
and then in your controller have a method built like this
public static List<SelectListItem> GetDropDown()
{
List<SelectListItem> ls = new List<SelectListItem>();
lm = (call database);
foreach (var temp in lm)
{
ls.Add(new SelectListItem() { Text = temp.name, Value = temp.id });
}
return ls;
}
Hopefully it helps.
Controller:
ViewBag.States = new SelectList(db.States, "StateID", "StateName");
View: (In your view write the code for dropdown like this)
@Html.DropDownListFor(m => m.Address.StateID,ViewBag.States as SelectList,"--Select State--")
--> Here Address in one of the tables in my database having StateID as one of its properties
This one worked perfectly for me.. Try it!!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With