Khi tiêu đề nói rằng tôi đang tìm kiếm một số trợ giúp trong công việc đó, tôi đã đọc nhiều hướng dẫn về nó nhưng không ai trong số họ có thể giải quyết được vấn đề của tôi để tải một dropdownlistfor
từ cơ sở dữ liệu. Cho đến nay, tôi đã đoạn mã sau:Làm thế nào để điền một danh sách thả xuống từ cơ sở dữ liệu trong ASP.NET MVC 4
**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();
}
Xem:
<div class="editor-field">
@Html.EditorFor(model => model.DistritoCliente)
@Html.DropDownListFor(model => model.DistritoCliente,(SelectList)ViewBag.ObtenerDistrito,"--Seleccione--")
@Html.ValidationMessageFor(model => model.DistritoCliente)
</div>
Till điểm tất cả mọi thứ này là ok, khi tôi mở hình thức mà các dropdownlistfor
công trình nhưng khi tôi gửi biểu mẫu tôi đã nhận thông báo sau:
Không có mục ViewData loại 'IEnumerable' mà có khóa 'DistritoCliente'.
Bất kỳ ý tưởng nào về những gì tôi đang làm sai hoặc cách tôi có thể giải quyết vấn đề này.
Xin cảm ơn trước.
Alex
Tại sao bạn sử dụng trình đọc dữ liệu khi bạn chỉ đọc tất cả dữ liệu của mình vào danh sách cùng một lúc? –
http://stackoverflow.com/questions/2849341/there-is-no-viewdata-item-of-type-ienumerableselectlistitem-that-has-the-key có khắc phục được sự cố của bạn không? –
tôi theo dõi bài viết và vẫn chưa giải quyết được vấn đề của mình ~ tôi đã thay đổi một số thứ như trong controller im làm điều này: ViewData ["Distritos"] = new SelectList (mới LNClientes(). DistritoListar(), "IdDistrito", "DescripcionDistrito"); nhưng vấn đề vẫn là khai báo danh sách thả xuống là @ Html.DropDownListFor (Model => Model.DistritoCliente, ((SelectListItem) ViewData ["Distrito"])) nhưng nó ném lỗi đối số, bất kỳ ý tưởng nào khác để giải quyết nó – Alex