ASP.NET Tutorial/Configuration/New Section
Creating a Configuration Element Collection
File: App_Code\ShoppingCartSection.cs
using System;
using System.Configuration;
namespace MyNamespace
{
public class ShoppingCartSection : ConfigurationSection
{
[ConfigurationProperty("maximumItems", DefaultValue = 100, IsRequired = true)]
public int MaximumItems
{
get { return (int)this["maximumItems"]; }
set { this["maximumItems"] = value; }
}
[ConfigurationProperty("defaultProvider")]
public string DefaultProvider
{
get { return (string)this["defaultProvider"]; }
set { this["defaultProvider"] = value; }
}
[ConfigurationProperty("providers", IsDefaultCollection = false)]
public ProviderSettingsCollection Providers
{
get { return (ProviderSettingsCollection)this["providers"]; }
}
public ShoppingCartSection(int maximumItems, string defaultProvider)
{
this.MaximumItems = maximumItems;
this.DefaultProvider = defaultProvider;
}
}
}
File: Web.config
<configuration>
<configSections>
<sectionGroup name="system.web">
<section
name="shoppingCart"
type="MyNamespace.ShoppingCartSection"
allowLocation="true"
allowDefinition="Everywhere" />
</sectionGroup>
</configSections>
<system.web>
<shoppingCart
maximumItems="50"
defaultProvider="SqlShoppingCartProvider">
<providers>
<add
name="SqlShoppingCartProvider"
type="MyNamespace.SqlShoppingCartProvider" />
<add
name="XmlShoppingCartProvider"
type="MyNamespace.XmlShoppingCartProvider" />
</providers>
</shoppingCart>
</system.web>
</configuration>
Creating Custom Configuration Sections by inheriting a new class from ConfigurationSection class
File: App_Code\DesignSection.cs
using System;
using System.Configuration;
using System.Drawing;
namespace MyNamespace
{
public class DesignSection : ConfigurationSection
{
[ConfigurationProperty("backcolor", DefaultValue = "lightblue", IsRequired = true)]
public Color BackColor
{ get { return (Color)this["backcolor"]; }
set { this["backcolor"] = value; }
}
[ConfigurationProperty("styleSheetUrl", DefaultValue = "~/styles/style.css", IsRequired = true)]
[RegexStringValidator(".css$")]
public string StyleSheetUrl
{
get { return (string)this["styleSheetUrl"]; }
set { this["styleSheetUrl"] = value; }
}
public DesignSection(Color backcolor, string styleSheetUrl)
{
this.BackColor = backcolor;
this.StyleSheetUrl = styleSheetUrl;
}
public DesignSection()
{
}
}
}
Register it in a configuration file.
File: Web.config
<configuration>
<configSections>
<sectionGroup name="system.web">
<section
name="design"
type="MyNamespace.DesignSection"
allowLocation="true"
allowDefinition="Everywhere"/>
</sectionGroup>
</configSections>
<system.web>
<design
backcolor="red"
styleSheetUrl="~/styles/style.css"/>
</system.web>
</configuration>
Using the custom configuration section to modify the page style and background color.
<%@ Page Language="C#" %>
<%@ Import Namespace="MyNamespace" %>
<%@ Import Namespace="System.Web.Configuration" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Page_Load()
{
DesignSection section = (DesignSection)WebConfigurationManager. GetWebApplicationSection("system.web/design");
htmlBody.Attributes["bgcolor"] = System.Drawing.ColorTranslator.ToHtml (section.BackColor);
HtmlLink link = new HtmlLink();
link.Href = section.StyleSheetUrl;
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(link);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show Design Section</title>
</head>
<body id="htmlBody" runat="server">
<form id="form1" runat="server">
<div>
<h1>Custom Configuration Section Sample</h1>
</div>
</form>
</body>
</html>
File: Web.config
<configuration>
<configSections>
<sectionGroup name="system.web">
<section
name="design"
type="MyNamespace.DesignSection"
allowLocation="true"
allowDefinition="Everywhere"/>
</sectionGroup>
</configSections>
<system.web>
<design
backcolor="red"
styleSheetUrl="~/styles/style.css"/>
</system.web>
</configuration>