Asp.net-Mvc-4

如何在 ASP.NET MVC 4 中從數據庫中填充下拉列表

  • July 30, 2015

正如標題所說,我正在為該任務尋求幫助,我已經閱讀了很多關於它的教程,但沒有一個可以解決我的問題,即如何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

這對我來說非常有效.. 試試看!!

引用自:https://stackoverflow.com/questions/18963618