正如标题所说,我正在寻找这项任务的一些帮助,我已经阅读了很多关于它的教程,但没有一个可以解决我的问题,即如何从数据库加载dropdownlist.到目前为止,我得到了以下代码:
**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工作,但当我提交表格时,我收到以下消息:
There is no ViewData item of type ‘IEnumerable’ that
has the key ‘DistritoCliente’.
关于我做错了什么或者我怎么能解决这个问题的任何想法.
提前致谢.
亚历克斯
解决方法
我通常如何建立我的下拉菜单是这样的
@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; }
希望它有所帮助.