【发布时间】:2015-07-31 04:10:16
【问题描述】:
正如标题所说,我正在为该任务寻求帮助,我已经阅读了很多关于它的教程,但没有一个可以解决我的问题,即如何从数据库加载 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'。
关于我做错了什么或如何解决这个问题的任何想法。
提前致谢。
亚历克斯
【问题讨论】:
-
当您一次将所有数据读入一个列表时,您为什么要使用数据阅读器?
-
stackoverflow.com/questions/2849341/… 能解决您的问题吗?
-
我关注了这篇文章,但仍然没有解决我的问题~我改变了一些东西,比如在控制器中这样做:ViewData["Distritos"] = new SelectList(new LNClientes().DistritoListar(), "IdDistrito", "DescriptionDistrito");但问题仍然是下拉列表的声明,它是 @Html.DropDownListFor(Model=> Model.DistritoCliente,((SelectListItem)ViewData["Distrito"])) 但它会引发参数错误,解决它的任何其他想法
标签: asp.net-mvc-4