参考:
页面代码
http://www.cnblogs.com/wzh206/archive/2013/05/13/3076495.html
web.config配置代码
<?
xml version="1.0" encoding="utf-8"
?>
<!--
有关如何配置 ASP.NET 应用程序的详细消息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
< configuration >
< configSections >
< section name ="mailServerGroup" type ="configSectionsDemo.Config.MailServerConfigurationHandler, configSectionsDemo, Version=1.0.0.0, Culture=neutral" />
</ configSections >
< mailServerGroup provider ="www.edong.com" >
< mailServer client ="forum.tracefact.net" >
< address >mail1.tracefact.net </ address >
< userName >jimmyzhang </ userName >
< password >123456 </ password >
</ mailServer >
< mailServer client ="blog.tracefact.com" >
< address >mail2.tracefact.net </ address >
< userName >webmaster </ userName >
< password >456789 </ password >
</ mailServer >
</ mailServerGroup >
< system.web >
< compilation debug ="true" targetFramework ="4.0" />
</ system.web >
</ configuration >
<!--
有关如何配置 ASP.NET 应用程序的详细消息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
< configuration >
< configSections >
< section name ="mailServerGroup" type ="configSectionsDemo.Config.MailServerConfigurationHandler, configSectionsDemo, Version=1.0.0.0, Culture=neutral" />
</ configSections >
< mailServerGroup provider ="www.edong.com" >
< mailServer client ="forum.tracefact.net" >
< address >mail1.tracefact.net </ address >
< userName >jimmyzhang </ userName >
< password >123456 </ password >
</ mailServer >
< mailServer client ="blog.tracefact.com" >
< address >mail2.tracefact.net </ address >
< userName >webmaster </ userName >
< password >456789 </ password >
</ mailServer >
</ mailServerGroup >
< system.web >
< compilation debug ="true" targetFramework ="4.0" />
</ system.web >
</ configuration >
类代码
MailServer
using System.Collections;
namespace configSectionsDemo.Config
{
public class MailServer
{
// 存储mailServer的子结点(Address,UserName,Password)的innerText值
// 以及属性 Client 的值
private Hashtable serverNode;
public MailServer()
{
serverNode = new Hashtable();
}
public Hashtable ServerNode
{
get { return serverNode; }
}
public string Client
{
get { return serverNode[ " client "] as string; }
}
public string Address
{
get { return serverNode[ " address "] as string; }
}
public string UserName
{
get { return serverNode[ " userName "] as string; }
}
public string Password
{
get { return serverNode[ " password "] as string; }
}
}
}
namespace configSectionsDemo.Config
{
public class MailServer
{
// 存储mailServer的子结点(Address,UserName,Password)的innerText值
// 以及属性 Client 的值
private Hashtable serverNode;
public MailServer()
{
serverNode = new Hashtable();
}
public Hashtable ServerNode
{
get { return serverNode; }
}
public string Client
{
get { return serverNode[ " client "] as string; }
}
public string Address
{
get { return serverNode[ " address "] as string; }
}
public string UserName
{
get { return serverNode[ " userName "] as string; }
}
public string Password
{
get { return serverNode[ " password "] as string; }
}
}
}
MailServerConfig
using System.Collections.Generic;
namespace configSectionsDemo.Config
{
public class MailServerConfig : List<MailServer>
{
private string provider; // 对应 mailServerGroup 结点的provider 属性
public string Provider
{
get { return provider; }
set { provider = value; }
}
}
}
namespace configSectionsDemo.Config
{
public class MailServerConfig : List<MailServer>
{
private string provider; // 对应 mailServerGroup 结点的provider 属性
public string Provider
{
get { return provider; }
set { provider = value; }
}
}
}
MailServerConfigurationHandler
using System.Configuration;
using System.Xml;
namespace configSectionsDemo.Config
{
// 自定义配置结点 mailServerGroup 的处理程序
public class MailServerConfigurationHandler : IConfigurationSectionHandler
{
// section 为 MailServerGroup 结点
public object Create( object parent, object configContext, XmlNode section)
{
// 设置方法返回的配置对象,可以是任何类型
MailServerConfig config = new MailServerConfig();
// 获取结点的属性信息
config.Provider =
section.Attributes[ " provider "] == null ? "" : section.Attributes[ " provider "].Value;
// 获取 MailServer 结点
foreach (XmlNode child in section.ChildNodes)
{
MailServer server = new MailServer();
// 添加Client属性
if (child.Attributes[ " client "] != null)
server.ServerNode.Add( " client ", child.Attributes[ " client "].Value);
// 获取MailServer下的 Name,UserName,Password 结点
foreach (XmlNode grandChild in child.ChildNodes)
{
// 添加文本
server.ServerNode.Add(grandChild.Name, grandChild.InnerText);
}
// 将server加入 MailServerConfig
config.Add(server);
}
return config;
}
}
}
using System.Xml;
namespace configSectionsDemo.Config
{
// 自定义配置结点 mailServerGroup 的处理程序
public class MailServerConfigurationHandler : IConfigurationSectionHandler
{
// section 为 MailServerGroup 结点
public object Create( object parent, object configContext, XmlNode section)
{
// 设置方法返回的配置对象,可以是任何类型
MailServerConfig config = new MailServerConfig();
// 获取结点的属性信息
config.Provider =
section.Attributes[ " provider "] == null ? "" : section.Attributes[ " provider "].Value;
// 获取 MailServer 结点
foreach (XmlNode child in section.ChildNodes)
{
MailServer server = new MailServer();
// 添加Client属性
if (child.Attributes[ " client "] != null)
server.ServerNode.Add( " client ", child.Attributes[ " client "].Value);
// 获取MailServer下的 Name,UserName,Password 结点
foreach (XmlNode grandChild in child.ChildNodes)
{
// 添加文本
server.ServerNode.Add(grandChild.Name, grandChild.InnerText);
}
// 将server加入 MailServerConfig
config.Add(server);
}
return config;
}
}
}
页面代码
aspx
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeBehind
=
"
WebForm1.aspx.cs
"
Inherits
=
"
configSectionsTest.WebForm1
"
%>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< h1 >
使用 自定义结点 和 自定义处理程序 </ h1 >
< b >MailServerGroup Provider </ b >:
< asp:Literal ID ="ltrServerProvider" runat ="server" ></ asp:Literal >
< h2 >
Mail Server1(Client: < asp:Literal ID ="ltrClient1" runat ="server" ></ asp:Literal >) Information: </ h2 >
< hr />
< b >Address </ b >:
< asp:Literal ID ="ltrAddress1" runat ="server" ></ asp:Literal >
< br />
< b >UserName </ b >:
< asp:Literal ID ="ltrUserName1" runat ="server" ></ asp:Literal >< br />
< b >Password </ b >:
< asp:Literal ID ="ltrPassword1" runat ="server" ></ asp:Literal >
< h2 >
Mail Server2(Client: < asp:Literal ID ="ltrClient2" runat ="server" ></ asp:Literal >) Information: </ h2 >
< hr />
< b >Address </ b >:
< asp:Literal ID ="ltrAddress2" runat ="server" ></ asp:Literal >
< br />
< b >UserName </ b >:
< asp:Literal ID ="ltrUserName2" runat ="server" ></ asp:Literal >< br />
< b >Password </ b >:
< asp:Literal ID ="ltrPassword2" runat ="server" ></ asp:Literal >
< br />
< br />
</ div >
</ form >
</ body >
</ html >
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title ></ title >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
< h1 >
使用 自定义结点 和 自定义处理程序 </ h1 >
< b >MailServerGroup Provider </ b >:
< asp:Literal ID ="ltrServerProvider" runat ="server" ></ asp:Literal >
< h2 >
Mail Server1(Client: < asp:Literal ID ="ltrClient1" runat ="server" ></ asp:Literal >) Information: </ h2 >
< hr />
< b >Address </ b >:
< asp:Literal ID ="ltrAddress1" runat ="server" ></ asp:Literal >
< br />
< b >UserName </ b >:
< asp:Literal ID ="ltrUserName1" runat ="server" ></ asp:Literal >< br />
< b >Password </ b >:
< asp:Literal ID ="ltrPassword1" runat ="server" ></ asp:Literal >
< h2 >
Mail Server2(Client: < asp:Literal ID ="ltrClient2" runat ="server" ></ asp:Literal >) Information: </ h2 >
< hr />
< b >Address </ b >:
< asp:Literal ID ="ltrAddress2" runat ="server" ></ asp:Literal >
< br />
< b >UserName </ b >:
< asp:Literal ID ="ltrUserName2" runat ="server" ></ asp:Literal >< br />
< b >Password </ b >:
< asp:Literal ID ="ltrPassword2" runat ="server" ></ asp:Literal >
< br />
< br />
</ div >
</ form >
</ body >
</ html >
页面后端代码
using System;
using System.Configuration;
using configSectionsDemo.Config;
namespace configSectionsTest
{
public partial class WebForm1 : System.Web.UI.Page
{
// SimpleCustom.aspx.cs
protected void Page_Load( object sender, EventArgs e)
{
// 获取 mailServerConfig 对象
MailServerConfig mailConfig = (MailServerConfig)ConfigurationManager.GetSection( " mailServerGroup ");
// 获取 MailServerGroup 结点的 Provider 属性
ltrServerProvider.Text = mailConfig.Provider;
// 获取第一租 MailServer 数据
ltrClient1.Text = mailConfig[ 0].Client;
ltrAddress1.Text = mailConfig[ 0].Address;
ltrUserName1.Text = mailConfig[ 0].UserName;
ltrPassword1.Text = mailConfig[ 0].Password;
// 获取第二租 MailServer 数据
ltrClient2.Text = mailConfig[ 1].Client;
ltrAddress2.Text = mailConfig[ 1].Address;
ltrUserName2.Text = mailConfig[ 1].UserName;
ltrPassword2.Text = mailConfig[ 1].Password;
}
}
}
using System.Configuration;
using configSectionsDemo.Config;
namespace configSectionsTest
{
public partial class WebForm1 : System.Web.UI.Page
{
// SimpleCustom.aspx.cs
protected void Page_Load( object sender, EventArgs e)
{
// 获取 mailServerConfig 对象
MailServerConfig mailConfig = (MailServerConfig)ConfigurationManager.GetSection( " mailServerGroup ");
// 获取 MailServerGroup 结点的 Provider 属性
ltrServerProvider.Text = mailConfig.Provider;
// 获取第一租 MailServer 数据
ltrClient1.Text = mailConfig[ 0].Client;
ltrAddress1.Text = mailConfig[ 0].Address;
ltrUserName1.Text = mailConfig[ 0].UserName;
ltrPassword1.Text = mailConfig[ 0].Password;
// 获取第二租 MailServer 数据
ltrClient2.Text = mailConfig[ 1].Client;
ltrAddress2.Text = mailConfig[ 1].Address;
ltrUserName2.Text = mailConfig[ 1].UserName;
ltrPassword2.Text = mailConfig[ 1].Password;
}
}
}
也是为了方便阅读参考,特简单摘录在此。代码一看就明白。
附上demo源码吧 ,一调试就明了。
http://files.cnblogs.com/yelaiju/configSectionsDemo.rar
本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/archive/2013/05/15/3080909.html,如需转载请自行联系原作者