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. ruby 字符串加密

    str = 'This is a test.rb!' #DES加密 puts str.crypt('salt') #MD532位加密 require 'digest' puts Digest::MD5 ...

  2. AtCoder Regular Contest 100 E - Or Plus Max

    一道很好的dp题 dp[K]存的是 i满足二进制1属于K二进制1位置 最大的两个Ai 这样dp[K]统计的两个数肯定满足(i | j) <= K 然后不断做 update(dp[i | (1&l ...

  3. 南京Uber优步司机奖励政策(12月14日到12月20日)

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

  4. Mac下node.js安装与卸载

    安装: 访问 http://nodejs.org/ 进入官网,下载 Mac 版本的 node.js,双击打开安装即可. 通过终端输入命令 node -v 验证 node 是否安装正确:npm -v 验 ...

  5. springboot 常用依赖

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...

  6. CakePHP2.x 发送邮件

    cake提供了多种发送邮件的方法,并且简单实用.以2.x为例 第一步 创建并添加邮件配置信息 拷贝app\Config\email.php.default 为email.php 打开在EmailCon ...

  7. explain获得使用的key的数据

    bool Explain_join::explain_key_and_len() { if (tab->ref.key_parts) return explain_key_and_len_ind ...

  8. android分析windowManager、window、viewGroup之间关系(二)

    三.接上一节,分析windowManager中添加一个悬浮框的方式,首先看代码 WindowManager.LayoutParams params = new LayoutParams(); para ...

  9. 「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)

    题意与分析(CodeForces 604B) 题意是这样的:\(n\)个数字,\(k\)个盒子,把\(n\)个数放入\(k\)个盒子中,每个盒子最多只能放两个数字,问盒子容量的最小值是多少(水题) 不 ...

  10. 软件测试工程师必备的SQL语句基础

    为一个软件测试工程师,我们在测试过程中往往需要对数据库数据进行操作,但是我们的操作大多以查询居多,有时会涉及到新增,修改,删除等操作,所以我们其实并不需要对数据库的操作有特别深入的了解,以下是我在工作 ...