正如标题所说,我正在寻找这项任务的一些帮助,我已经阅读了很多关于它的教程,但没有一个可以解决我的问题,即如何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();
}
Run Code Online (Sandbox Code Playgroud)
视图:
<div class="editor-field">
@Html.EditorFor(model => model.DistritoCliente)
@Html.DropDownListFor(model => model.DistritoCliente,(SelectList)ViewBag.ObtenerDistrito,"--Seleccione--")
@Html.ValidationMessageFor(model => model.DistritoCliente)
</div>
Run Code Online (Sandbox Code Playgroud)
直到这一点一切正常,当我打开表单的dropdownlistfor
工作,但当我提交表单时,我收到以下消息:
没有类型为"IEnumerable"的ViewData项具有"DistritoCliente"键.
关于我做错了什么或者我怎么能解决这个问题的任何想法.
提前致谢.
亚历克斯
Mat*_*ily 18
我如何通常建立我的下拉菜单是这样的
@Html.DropDownListFor(x => x.Field, PathToController.GetDropDown())
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器中有一个像这样构建的方法
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;
}
Run Code Online (Sandbox Code Playgroud)
希望它有所帮助.