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下拉场景,你按需选择:
场景一:表单里的下拉选择框(
相关产品推荐
相关产品推荐

