You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:08