ASP.NET MVC项目中如何将SQL Server数据绑定到HTML select下拉框
核心问题说明
你当前的代码存在两处核心问题导致无法完成绑定:
PopulateEmps方法仅从数据库拿到了DataTable,没有将数据填充到SelectListItem集合中,返回的是空集合- 控制器中构造完成的
empPopulate模型对象没有传递给视图,视图无法获取到数据源
步骤1:修正数据转换方法
修改PopulateEmps方法,遍历DataTable的行数据生成SelectListItem集合:
private static List<SelectListItem> PopulateEmps() { List<SelectListItem> items = new List<SelectListItem>(); DataTable localdt = DALAcess.getDataFromSql("SELECT id,AgentName from [atmcolle_COMM_U88].[dbo].ATM_M_empMaster"); // 新增DataTable转SelectListItem逻辑 if (localdt != null && localdt.Rows.Count > 0) { foreach (DataRow row in localdt.Rows) { items.Add(new SelectListItem { Text = row["AgentName"].ToString(), Value = row["id"].ToString() }); } } return items; }
步骤2:修正控制器传值逻辑
修改SearchHome方法,将构造完成的模型对象传递给视图:
[HttpGet] public ActionResult SearchHome() { SearchPopulateMaster empPopulate = new SearchPopulateMaster(); empPopulate.emp = PopulateEmps(); // 将模型传入视图 return View(empPopulate); }
步骤3:修正视图绑定逻辑
首先在视图文件顶部添加模型绑定声明,替换为你项目中SearchPopulateMaster类的实际命名空间:
@model 你的项目命名空间.Models.SearchPopulateMaster
然后修改select元素,通过asp-items标签助手绑定数据源:
<form asp-controller="SearchHome" asp-action="SearchHome"> <select name="selEmp" id="selEmp" asp-items="Model.emp"> <option value="">Please select one</option> </select> <input type="submit" /> </form>
如果使用的是ASP.NET MVC而非ASP.NET Core,也可以用Html.DropDownListFor方法实现绑定:
@Html.DropDownListFor(m => m.emp, "Please select one", new { id = "selEmp", name = "selEmp" })
内容的提问来源于stack exchange,提问作者Sowmitri H
相关产品推荐
相关产品推荐

