当前位置: 首页 > article >正文

MVC DropDownListFor 的使用和无限级分类的展示

    CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记

  • 先说一下SelectList类:  表示一个列表

                   构造函数1:SelectList(IEnumerable)使用列表的指定项来初始化SelectList 类的新实例。

                   构造函数2:SelectList(IEnumerable, Object)  使用列表的指定项和选定的值来初始化SelectList 类的新实例。

                   构造函数3:SelectList(IEnumerable, String, String)使用列表的指定项、数据值字段和数据文本字段来初始化SelectList 类的新实例。

                   构造函数4:SelectList(IEnumerable, String, String, Object)使用列表的指定项、数据值字段、数据文本字段和选定的值来初始化新实例。



  • 使用方法1:直接写在html中的

@Html.DropDownListFor(m => m.proType, new[]{new SelectListItem(){Text="--请选择--",Value=""},new SelectListItem(){Text="1",Value="1"}}, new{ @id="ddl",@class="cssClass"})

  • 使用方法2:动态添加的

          (1):获取列表项

        public static SelectList GetSelectList(){List<SelectListItem> l = new List<SelectListItem>();for (int i = 0; i < 10; i++){SelectListItem sli = new SelectListItem() { Text = i.ToString(), Value = i.ToString() };l.Add(sli);}SelectList sl = new SelectList(l, "Value", "Text");return sl;}
          (2)把列表项传递过去

 ViewBag.ddl = GetSelectList();
          (3)在视图中,把列表项遍历出来

@Html.DropDownListFor(m => m.proType, ViewBag.ddl as SelectList, new{ @id="ddl",@class="cssClass"})

  • 无限级分类展示:

            如果有一个类别表,是无限级分类的 我们假设  表名: Type   列: id(主键)     name(名称)    fid(父ID).       如果fid为0或null,说明没有父级项.我们如何使用

Html.DropDownListFor(...)把它分层次的展示出来.形如下图:



          第一步:获取数据(当前这获取数据种方式为了例子而例子.效率很低....建议使用存储过程)

        /// <summary>/// 获取要显示的内容/// </summary>/// <param name="fid">父ID</param>/// <returns>List<Type> 类别对列表</returns>public List<Type> GetClassList(int fid = 0){List<Type> l = new List<Type>();DCDataContext dc = new DCDataContext();var rs = dc.Type.Where(r => r.fId == fid);if (rs.Count() > 0){int deep = 1;foreach (Type t in rs){//获取深度deep = GetDeep(t.id);//拼接显示的形式string line = "├("+deep+")";string space ="";for (int i = 1; i < deep; i++){space += HttpUtility.HtmlDecode("   ");}t.name = space + line + t.name;  //把查询的对象添加到列表中l.Add(t);l.AddRange(GetClassList(t.id));//把深度值初始化deep = 1;}}return l; }/// <summary>/// 获取指定对象的深度/// </summary>/// <param name="id">对象ID</param>/// <returns>深度</returns>private int GetDeep(int id){int deep=1;DCDataContext dc = new DCDataContext();Type t = dc.Type.Where(r => r.id == id).FirstOrDefault();if (t != null){if (t.fId == null || t.fId == 0){return deep;}else{deep+=GetDeep((int)t.fId);}}else{return deep;}return deep;}

          第二步:调用数据

        public ActionResult Index(){ViewBag.classList = GetClassList(0);return View();}


          第三部:视图中显示

@Html.DropDownListFor(m => m.id, new SelectList(@ViewBag.ClassList, "Id", "Name"), new { })



http://www.lryc.cn/news/2418089.html

相关文章:

  • 中国计算机制造业比较优势分析,在全球产业链中,中国制造业拥有哪些显著的比较优势?()...
  • C语言基础入门:了解语法规则
  • python怎么交换xy轴_Python可视化|pygal37-pygal用法及示例
  • 基于django+vue丽江古城景区疫情管理系统【开题报告+程序+论文】计算机毕设
  • 信息系统安全与对抗技术 学习笔记(7):防火墙安全技术
  • 解决eclipse中的项目内xml文件总是报错!!!
  • GSM Arena 魅族mx四核评测-个人翻译
  • 找不到steam_api.dll,无法继续执行代码-常见解决方法
  • Win10 无法加载操作系统,关键系统驱动程序丢失或错误 蓝屏错误代码0xc000007b
  • java6.0新特性_JDK6.0的新特性:轻量级Http Server
  • 五款免费的网络管理工具
  • 插入始终是1_40分!1分钟4次!大JB太硬了!
  • 我的世界服务器物品属性,属性 - Minecraft Wiki,最详细的官方我的世界百科
  • windows HOOK机制
  • 关于VM虚拟机出现Operating System not found问题的解决方法参考建议
  • 青岛市市立医院实施红帆OA
  • 使用BERT进行跨领域情感分析
  • 解决Windows出现X3DAudio1_4.dll文件错误问题
  • STM32Cube程序使用 DFU 烧写后Leave DFUMode无法运行程序
  • 13 万字 C 语言从入门到精通保姆级教程2024 年版_13万字c语言保姆教程
  • 【全网最强】最通俗易懂的C语言开发环境搭建教程,分分钟教你如何在Windows中运行第一个Hello World程序
  • PXN防护技术的研究与绕过
  • while及do while语句
  • IT研发工程师干货QQ群整理
  • 永久删除暴风影音服务项,去除 stormliv.exe 进程
  • 文件加密和各种格式
  • 运维(29) CentOS7.6通过KubeOperator部署Kubernetes集群
  • makefile编译驱动
  • 工具合集-编程环境,编程软件,常用的实用工具下载、安装和配置,收藏绝对不亏!
  • hosts