本篇文章主要介绍了"MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件",主要涉及到treeview方面的内容,对于.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件。最近我们的项目中需要用到树型菜单,以前使...
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件。最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的控件,非常方便,但现在需要在asp.netmvc中使用树形菜单,先说明下我们对树形菜单的需求:
1,支持CheckBox,允许对菜单项进行选择;
2,当选择父菜单时,它下面的子菜单全部选中;
3,当取消父菜单的选中状态时,下面的子菜单也全部取消;
4,比较方便的与MVC结合;
5,能够初始化选中状态。
6,能够以提交表单的方式,一次性将树绑定到后台接收的对象。
首先菜单数据对象:
完整的 CheckboxTreeHelper.cs 代码:
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Mvc.Html;
7using System.Text;
8 9/* 10author:熊学浩
11time:2016年6月5日
12description:树形菜单控件(有问题请致信:xiongzaiqiren@163.com),或者请参考【http://www.cnblogs.com/xiongzaiqiren/】
13*/ 14namespace System.Web.Mvc
15{
16/// 17/// 菜单数据对象
18/// 19publicclass CheckboxTreeItem
20 {
21/// 22/// 显示的文本
23/// 24publicstring Text { get; set; }
25/// 26/// 显示文本对应的值
27/// 28publicstring Value { get; set; }
29/// 30/// 是否被选中
31/// 32publicbool Checked { get; set; }
33/// 34/// 结合表单的辅助属性,View上使用(注意每个层级的索引必需从0开始并且是连续的)
35/// 36publicstring Index { get; set; }
37 38/// 39/// 子菜单集合
40/// 41public IList Items { get; set; }
42 }
43 44/// 45/// 复选框树控件
46/// 熊学浩
47/// 2016年6月3日
48/// 49publicstaticclass CheckboxTreeHelper
50 {
51privatestaticbool baselayer;
52 53publicstatic String CheckboxTree(this HtmlHelper helper, string Name, CheckboxTreeItem Model, outstring this_HtmlDomName, bool isChildNode = false)
54 {
55if (null == Model)
56 {
57 this_HtmlDomName = string.Empty;
58returnstring.Empty;
59 }
60 61 StringBuilder sb = new StringBuilder();
62if (!baselayer)
63 sb.Append("");
64 65if (!isChildNode)
66 sb.Append("");
67 sb.Append("");
68 69 this_HtmlDomName = Name + "[" + Model.Index + "]";
70 71 sb.Append("");
72 sb.AppendFormat("", (this_HtmlDomName + ".Checked"), Model.Checked.ToString());
73 sb.AppendFormat("{0}", Model.Text);
74 sb.Append("");
75 76 sb.AppendFormat("", (this_HtmlDomName + ".Text"), Model.Text);
77 sb.AppendFormat("", (this_HtmlDomName + ".Value"), Model.Value);
78 sb.AppendFormat("", (this_HtmlDomName + ".Index"), Model.Index);
79 80if (null != Model.Items)
81 {
82 sb.Append("");
83for (var i = 0; i < Model.Items.Count; i++)
84 {
85string _this_HtmlDomName;
86 sb.Append(CheckboxTree(helper, this_HtmlDomName + ".Items", Model.Items[i], out _this_HtmlDomName, true));
87 }
88 sb.Append("");
89 }
90 91 sb.Append("");
92if (!isChildNode)
93 sb.Append("");
94 95if (!baselayer)
96 sb.Append("