1、前台

<div class="control-group">
<label class="control-label">
导航名称:</label>
<div class="controls">
<asp:CheckBoxList ID="CboxList" runat="server">
</asp:CheckBoxList>
<span class="help-inline"></span>
</div>
</div>

2、XML文件  MenuConfig.xml

<?xml version="1.0" encoding="utf-8" ?>
<MenuConfig>
<MenuGroups>
<MenuGroup name="管理首页" url="main.aspx" icon="icon-home" info="欢迎登录OAM管理系统!">
</MenuGroup>
<MenuGroup name="系统管理" icon="icon-cog">
<MenuArray>
<Menu name="用户管理" url="/Account/User/Index" info="添加修改删除用户" permission="Manage_User" />
<Menu name="权限管理" url="/Account/Role/Index" info="添加修改删除角色" permission="Manage_Role" />
<Menu name="日志管理" url="/Account/Role/Index" info="添加修改删除角色" permission="Manage_Log" />
<Menu name="修改密码" url="/Account/Role/Index" info="添加修改删除角色" permission="Modify_Pwd" />
</MenuArray>
</MenuGroup> <MenuGroup name="企业信息管理" icon="icon-leaf">
<MenuArray>
<Menu name="企业信息列表" url="/Cms/Article/Index" info="添加修改删除文章" permission="Manage_Enterp" />
<Menu name="新增企业(我司)" url="/Cms/Channel/Index" info="添加修改删除文章频道" permission="AddMy_Enterp" />
<Menu name="注册企业(网络)" url="/Cms/Channel/Index" info="添加修改删除文章频道" permission="AddInter_Enterp" />
</MenuArray>
</MenuGroup> <MenuGroup name="企业服务管理" icon="icon-sitemap">
<MenuArray>
<Menu name="客户反馈" url="/OA/Staff/Index" info="添加修改删除员工信息" permission="Feedback_Manage" />
<Menu name="客户投诉" url="/OA/Branch/Index" info="添加修改删除部门信息" permission="Complaints_Manage" />
</MenuArray>
</MenuGroup> <MenuGroup name="企业信息维护管理" icon="icon-phone-sign">
<MenuArray>
<Menu name="来访来电" url="/Crm/VisitRecord/Index" info="添加修改删除来访来电" permission="CrmManage_VisitRecord" />
<Menu name="客户管理" url="/Crm/Customer/Index" info="添加修改删除客户" permission="CrmManage_Customer" />
<Menu name="项目管理" url="/Crm/Project/Index" info="添加修改删除项目" permission="CrmManage_Project" />
<Menu name="业绩统计" url="/Crm/Analysis/Index" info="查看业绩统计" permission="CrmManage_Analysis" />
<Menu name="来电统计" url="/Crm/Analysis/VisitStatistics" info="查看来电统计" permission="CrmManage_Analysis" />
</MenuArray>
</MenuGroup>
<MenuGroup name="消息中心" icon="icon-sitemap">
<MenuArray>
<Menu name="客户反馈" url="/OA/Staff/Index" info="添加修改删除员工信息" permission="OAManage_Staff" />
<Menu name="客户投资" url="/OA/Branch/Index" info="添加修改删除部门信息" permission="OAManage_Branch" />
</MenuArray>
</MenuGroup>
</MenuGroups>
</MenuConfig>

3、Model层  MenuConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization; namespace OAM.Model
{
[Serializable]
public class MenuConfig
{
public MenuConfig()
{
} public MenuGroup[] MenuGroups { get; set; }
} [Serializable]
[XmlRoot("MenuGroups")]
public class MenuGroup
{
[XmlArray("MenuArray")]
[XmlArrayItem("Menu")]
public List<Menu> MenuArray { get; set; }
[XmlAttribute("id")]
public string Id { get; set; } [XmlAttribute("name")]
public string Name { get; set; } [XmlAttribute("url")]
public string Url { get; set; } [XmlAttribute("icon")]
public string Icon { get; set; } [XmlAttribute("permission")]
public string Permission { get; set; } [XmlAttribute("info")]
public string Info { get; set; }
} [Serializable]
[XmlRoot("Menu")]
public class Menu
{
[XmlAttribute("id")]
public string Id { get; set; } [XmlAttribute("name")]
public string Name { get; set; } [XmlAttribute("url")]
public string Url { get; set; } [XmlAttribute("info")]
public string Info { get; set; } [XmlAttribute("permission")]
public string Permission { get; set; }
}
}

4、将xml文件内容反序列化成对象

#region XML导航反序列化  绑定CheckBoxList

        //将xml反序列化为MenuConfig数组对象
private void XmlMenuToModel()
{
OAM.Model.MenuConfig MenuListArr = XmlDeseriFromfile<OAM.Model.MenuConfig>(Request.MapPath("Config/MenuConfig.xml"), Encoding.UTF8);
if (MenuListArr.MenuGroups.Length > 0)
{
for (int i = 0; i < MenuListArr.MenuGroups.Length; i++)
{
if (MenuListArr.MenuGroups[i].MenuArray.Count > 0)
{
for (int j = 0; j < MenuListArr.MenuGroups[i].MenuArray.Count; j++)
{
ListItem item = new ListItem(MenuListArr.MenuGroups[i].MenuArray[j].Name, MenuListArr.MenuGroups[i].MenuArray[j].Permission);
CboxList.Items.Add(item);
}
}
}
}
} /// <summary>
/// 从XML字符串中反序列化对象
/// </summary>
/// <typeparam name="T">结果对象类型</typeparam>
/// <param name="s">包含对象的XML字符串</param>
/// <param name="encoding">编码方式</param>
/// <returns>反序列化得到的对象</returns>
public T Deser<T>(string xmlstr, Encoding encoding)
{
XmlSerializer myser = new XmlSerializer(typeof(T));
MemoryStream ms = new MemoryStream(encoding.GetBytes(xmlstr));
StreamReader sr = new StreamReader(ms, encoding); return (T)myser.Deserialize(sr);
} /// <summary>
/// 读入一个文件,并按XML的方式反序列化对象。
/// </summary>
/// <typeparam name="T">结果对象类型</typeparam>
/// <param name="path">文件路径</param>
/// <param name="encoding">编码方式</param>
/// <returns>反序列化得到的对象</returns>
public T XmlDeseriFromfile<T>(string path, Encoding encoding)
{
string xml = File.ReadAllText(path, encoding);
return Deser<T>(xml, encoding);
} #endregion

搞了3小时才弄出这么点来代码,大家多支持一下。有什么问题留言,请教大神留下好的足迹。

 

XML 反序列化成对象,绑定到CheckBoxList控件的更多相关文章

  1. ObjC 巧用反射和KVC实现JSON快速反序列化成对象

    1.简单的KVC介绍 KVC是一种间接访问对象属性的机制,不直接调用getter 和 setter方法,而使用valueForKey 来替代getter 方法,setValue:forKey来代替se ...

  2. XML序列化成对象

    这个是和ALM上传测试结果结合使用的//把xml序列化成对象以及把对象序列化成xml using System; using System.Data; using System.Configurati ...

  3. ajax提交后台自动反序列化成对象

    下面是ajax提交的方法,主要用到了$form.serializeArray()将表单序列化成json对象,然后用each处理一下,代码如下: var $form = $('<form>& ...

  4. JSON字符串反序列化成对象_部分属性值反序列化失败

    简介:本人在开发webapi接口时遇到了:一个复杂的Json字符串在反序列化为对象时报,无法发序列化其中的一个属性对象? 使用方法: InternalRecommendRequestFormModel ...

  5. EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor

    Grid 根据数据源某列数据不同绑定不同的控件,例如:文本框和下拉框 主要代码写在grid的  plugins: [rowEditing],下面这是定义的rowEditing对象,这里面的要定义成 E ...

  6. CheckBoxList控件

    主要介绍:自定义数据.绑定数据库数据.全选,取消全选. 这种方法是绑定已经给定(自定义)的字段(这种方法是绑定给定的值,就是在编写控件时给Text赋的值): 前台代码: <asp:CheckBo ...

  7. Winform开发中如何将数据库字段绑定到ComboBox控件

    最近开始自己动手写一个财务分析软件,由于自己也是刚学.Net不久,所以自己写的的时候遇到了很多问题,希望通过博客把一些印象深刻的问题记录下来. Winform开发中如何将数据库字段绑定到ComboBo ...

  8. 如何在双向绑定的Image控件上绘制自定义标记(wpf)

    我们的需求是什么? 答:需要在图片上增加一些自定义标记,例如:2个图片对比时,对相同区域进行高亮. 先上效果图: 设计思路 1.概述 1.通过TargeUpdated事件,重新绘制图片进行替换. 2. ...

  9. winform快速开发平台 -> 快速绑定ComboBox数据控件

    通常我们在处理编辑窗体时.往往会遇到数据绑定.例如combobox控件绑定数据字典可能是我们经常用到的.然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢? 首先,我们要绑定combo ...

随机推荐

  1. Hadoop入门学习路线

    走上大数据的自学之路....,Hadoop是走上大数据开发学习之路的第一个门槛. Hadoop,是Apache的一个开源项目,开发人员可以在不了解分布式底层细节,开发分布式程序,充分利用集群进行高速运 ...

  2. vowels_单元音

    vowels(美式): 单元音: [i]:需要用劲喊出类似于“yi”的四声,费力咧开嘴,单词eat.need.thief.meet. [?]:卷舌音,单词bird.her.worry.certain. ...

  3. 成都Uber优步司机奖励政策(3月4日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. core 中ef 连接sql server数据库 在类库中 自动生成 model

    首先 介绍 Scaffold-DbContext "Server=.;database=sdd;User Id=sa;Password=123456;" Microsoft.Ent ...

  5. C# 浮点转时间

    想了大半天实在想不出什么更适合文章的标题... 就现在这个标题,挺好- - 什么是浮点转时间呢? 今天写的一个计时功能,想来想去还是现在这种解决方案比较合适 先上一张图在来讲解比较明了 如图:赛车游戏 ...

  6. PS 拉伸大长腿

    1.打开一个图片工具栏--图像--画布大小 2.选择矩形选框工具--框住要拉升退的位置--然后在按Ctrl+T,进行拉伸即可

  7. Javascript打印网页局部的实现方案

    项目中,需要对页面的部分div进行打印,为了保证界面布局不乱,采取了新建iframe的方法. 将需要打印的div放到iframe中,然后调用iframe进行打印,就可以很好的实现局部打印的效果了. 同 ...

  8. Linux命令应用大词典-第41章 MySQL数据库

    41.1 mysqld_safe:MySQL服务器启动脚本 41.2 mysql_install_db:初始化MySQL数据目录 41.3 mysqlshow:显示MySQL数据库结构 41.4 my ...

  9. TW实习日记:第16天

    前端的样式bug实在是太太太莫名其妙了,尤其是封装好的组件,一层套一层的,根本不知道是哪一层出了问题...除了改bug就是做新功能,真想吐槽一下这个项目的留言板,根本没人会用吧...这功能实在是太老旧 ...

  10. leetcode-对称二叉树

    对称二叉树     给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2, ...