Asp.net-Mvc-4
如何在 ASP.NET MVC 4 中從數據庫中填充下拉列表
正如標題所說,我正在為該任務尋求幫助,我已經閱讀了很多關於它的教程,但沒有一個可以解決我的問題,即如何
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時,當我送出表單時,我收到以下消息:沒有具有鍵“DistritoCliente”的“IEnumerable”類型的 ViewData 項。
關於我做錯了什麼或如何解決這個問題的任何想法。
提前致謝。
亞歷克斯
我通常如何建構我的下拉列表是這樣的
@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; }希望它有所幫助。
控制器:
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--")–> 這裡是我的數據庫中的一個表中的地址,它的屬性之一是 StateID
這對我來說非常有效.. 試試看!!