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

ASP.NET项目中用C#从SQL表填充Bootstrap下拉菜单求助

嘿,这个需求太常见了,我来给你一步步拆解实现方案,保证能顺利把SQL里的Category数据动态填充到Bootstrap下拉菜单里,替换掉原来的硬编码选项~

实现方案总览

核心思路就是:后端从SQL的Category表读取数据 → 把数据传递到前端视图 → 用Razor语法遍历数据,动态生成Bootstrap下拉菜单的选项。下面分步骤给你具体代码:

1. 定义Category实体类

先创建一个和数据库Category表对应的实体类,字段对应表的列(假设你的表有Id和Name两个核心字段):

public class Category
{
    public int Id { get; set; } // 对应Category表的主键Id
    public string Name { get; set; } // 对应分类名称字段
}

2. 数据库数据访问(两种常用方式)

方式一:用EF Core(推荐,更简洁易维护)

第一步:配置DbContext

创建数据库上下文类,关联Category表:

using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }

    // 映射到SQL的Category表
    public DbSet<Category> Categories { get; set; }
}

第二步:配置数据库连接字符串

在appsettings.json里添加你的SQL连接字符串:

"ConnectionStrings": {
    "DefaultConnection": "Server=你的SQL服务器名;Database=你的数据库名;Trusted_Connection=True;TrustServerCertificate=True;"
}

第三步:注册DbContext(.NET 6+ 用Program.cs)

在Program.cs里把DbContext注入到依赖容器:

builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

方式二:用ADO.NET(适合不想用EF的场景)

如果更习惯原生ADO.NET,写一个数据读取方法:

using System.Data.SqlClient;
using System.Collections.Generic;

public List<Category> GetCategoriesFromDb()
{
    List<Category> categories = new List<Category>();
    // 从appsettings.json读取连接字符串
    string connStr = builder.Configuration.GetConnectionString("DefaultConnection");
    
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        string query = "SELECT Id, Name FROM Category";
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();
        
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                categories.Add(new Category
                {
                    Id = Convert.ToInt32(reader["Id"]),
                    Name = reader["Name"].ToString()
                });
            }
        }
    }
    return categories;
}

3. 后端Controller传递数据到视图

在你的目标Controller(比如HomeController)里,获取分类数据并传递给视图:

public class HomeController : Controller
{
    private readonly AppDbContext _dbContext;

    // 构造函数注入DbContext(EF Core方式)
    public HomeController(AppDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public IActionResult Index()
    {
        // EF Core方式获取数据
        var categories = _dbContext.Categories.ToList();
        
        // 如果用ADO.NET,就调用上面的方法:
        // var categories = GetCategoriesFromDb();
        
        // 用ViewBag传递数据到视图(也可以用ViewModel,更规范,这里先简化)
        ViewBag.Categories = categories;
        return View();
    }
}

4. 前端视图动态生成Bootstrap下拉菜单

分两种常见的Bootstrap下拉场景,你按需选择:

场景一:表单里的下拉选择框(

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:25:09