【网摘】C#.NET 在 MVC 中动态绑定下拉菜单的方法
1. 已知下拉菜单列表项:
在 Controller 控制器类中输入已下代码
1 public class DemoController : Controller2 {
3 public ActionResult BindDropDownList()
4 {
5 List<SelectListItem> select1 = new List<SelectListItem>
6 {
7 new SelectListItem { Text = "内容", Value = "值" },
8 new SelectListItem
9 };
10
11 ViewData["select1"] = new SelectList(select1, "Value", "Text", "此处为默认项的值");
12
13 return View();
14 }
15 }
在 View 中使用
1 <%= Html.DropDownList("select1") %>
这种方法简单明了,也比较方便,如果不用从数据库中读取数据的话,可以采用这种方法。
此处省略数据库连接代码,从数据库读出的数据与字符串数组中存储的数据类似,以下就以数组为例。
在 Controller 中控制器类中输入已下代码
1 public class DemoController : Controller2 {
3 public ActionResult BindDropDownList()
4 {
5 string[] texts = new string[] { "一", "二", "三", n

6 string[] values = new string[] { "1", "2", "3", n

7
8 List<SelectListItem> select1 = new List<SelectListItem>();
9
10 for (int i = 0; i < texts.Length; i++)
11 {
12 select1.Add(new SelectListItem
13 {
14 Text = texts[i],
15 Value = values[i]
16 });
17 };
18
19 ViewData["select1"] = new SelectList(select1, "Value", "Text", "此处为默认项的值");
20
21 return View();
22 }
23 }
在 View 中使用
1 <%= Html.DropDownList("select1") %>
其实这种方法看起来跟第1种比较类似,只是读取数据的时候,采用了一个循环的语句。
此处假设已存在 Category 类,可以通过 Category.GetList() 方法获取该表的所有分类,该表包含 ID 和 Name 两个数据列。
在 Controller 中控制器类中输入已下代码
1 public class DemoController : Controller2 {
3 public ActionResult BindDropDownList()
4 {
5 List<CategoryEntiry> categories = Category.GetAll();
6
7 ViewData["Categories"] = new SelectList(categories, "ID", "Name");
8
9 return View();
10 }
11 }
在 View 中使用
1 // 首先将 ViewData 中的数据转化为 SelectList2 <% SelectList categories = ViewData["Categories"] as SelectList; %>
3
4 // 然后才能输出
5 <%= Html.DropDownList("Category", categories) %>
在这里需要注意,就是第3种与前2种在 View 中使用方法稍有不同,当然也可以将前2种方法改为第3种方法,或者将第3种方法改为前2种方法。
本文来自博客园,作者:yscit,转载请注明原文链接:https://www.cnblogs.com/yscit/articles/4845752.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统