正如标题所说,我正在寻找这项任务的一些帮助,我已经阅读了很多关于它的教程,但没有一个可以解决我的问题,即如何从数据库加载dropdownlistfor
。到目前为止,我得到了以下代码:
**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();
}
查看:
<div class="editor-field">
@Html.EditorFor(model => model.DistritoCliente)
@Html.DropDownListFor(model => model.DistritoCliente,(SelectList)ViewBag.ObtenerDistrito,"--Seleccione--")
@Html.ValidationMessageFor(model => model.DistritoCliente)
</div>
直到这一点一切正常,当我打开dropdownlistfor
表格时,但是当我提交表格时,我得到了以下信息:
没有类型为'IEnumerable'的ViewData项 有关键'DistritoCliente'。
对我做错了什么或者如何解决这个问题有所了解。
提前致谢。
亚历
答案 0 :(得分:18)
我通常如何构建我的下拉列表就像这样
@Html.DropDownListFor(x => x.Field, PathToController.GetDropDown())
然后在你的控制器中有一个像这样构建的方法
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;
}
希望它有所帮助。
答案 1 :(得分:4)
控制器:
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--")
- &GT;这里在我的数据库中的一个表中使用StateID作为其属性之一
这个对我很有用..试试吧!!