<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Footprints in the snow of a warped mind - C#</title>
    <link>http://blogs.thesitedoctor.co.uk/test/</link>
    <description>newtelligence powered</description>
    <language>en-us</language>
    <copyright>Tim</copyright>
    <lastBuildDate>Tue, 26 Oct 2010 10:31:55 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>timgaunt@gmail.com</managingEditor>
    <webMaster>timgaunt@gmail.com</webMaster>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=f136b7cb-f755-4011-83f2-a1e2192fd666</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,f136b7cb-f755-4011-83f2-a1e2192fd666.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,f136b7cb-f755-4011-83f2-a1e2192fd666.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=f136b7cb-f755-4011-83f2-a1e2192fd666</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="header[1]" border="0" alt="header[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/images/64eb161c0baa_93C0/header1.jpg" width="240" height="320" />Probably
one of the most common features of an ecommerce systems is to "retrieve my details"
when logging in -after all that's why you create an account with the seller isn't
it?
</p>
        <p>
Out of the box, <a title="e-commerce package for Umbraco" href="http://www.ucommerce.dk" target="_blank">uCommerce</a> has
XSLT to retrieve the customer's last x addresses but one thing it didn't do was automatically
re-assign the customer's details when logging in using the built in Umbraco membership
code so we need to work around it ourselves -don't worry, it's not too hard (all the
code is below for you).
</p>
        <h2>Background
</h2>
        <p>
All customer addresses are stored in the uCommerce_Address table automatically, there
should be one unique address per customer however if you're on an earlier release
you may find you have several copies of the same address for each customer -this is
a bug that's been sorted in v1.0.5.0 so upgrade if you can.
</p>
        <p>
Now you'd be forgiven for thinking that you can just select the address from the uCommerce_Address
table and then assign the id to the BillingAddressId property of your purchase order
however if you do that, you'll find you get the error:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d9065df3-b3b8-496d-a9a1-63b491ac4cd1" class="wlWriterEditableSmartContent">
          <pre class="brush: text;">The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_uCommerce_PurchaseOrder_uCommerce_OrderAddress". 
The conflict occurred in database "CommsReadyCMS", table "dbo.uCommerce_OrderAddress", column 'OrderAddressId'.
The statement has been terminated.</pre>
        </div>
        <p>
 
</p>
        <p>
You'll get this because there is also a second table involved -uCommerce_OrderAddress.
uCommerce_OrderAddress stores the actual address used throughout the order process
incase the customer changes an address in the future, the order will always have the
correct address.
</p>
        <h2>The Solution
</h2>
        <p>
Working around this isn't actually too difficult as mentioned before. The easiest
solution is to create a new User Control in Visual Studio (I'll call mine login.ascx)
and hook into the LoggedIn event. Once logged in, get the Umbraco member and from
that, get the customer's billing address.
</p>
        <p>
There's one caveat that I found with uCommerce and that's the way it gets the address.
At the moment, there is a function on customer "GetAddress", this is great however
if you check out the code it calls, it actually gets the customer's first address
from the database -rather than the last address used. I don't think this is a bug
as in most cases the first address you enter is your main address. I'll blog separately
about managing a default address within the members section.
</p>
        <p>
The code below however retrieves the most recently added address from the database
</p>
        <h3>Login.ascx
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d68c8cf3-8452-49f9-b0bb-8289818fa29a" class="wlWriterEditableSmartContent">
          <pre class="brush: html;">&lt;asp:literal runat="server" ID="litLoggedIn" /&gt;
&lt;asp:literal runat="server" ID="litLoggedOut" /&gt;
&lt;asp:Login runat="server" id="lgnForm" CssClass="checkout-details" 
	DisplayRememberMe="false" TitleText="" OnLoggedIn="lgnForm_LoggedIn"
	UserNameLabelText="Email Address" /&gt;</pre>
        </div>
        <p>
 
</p>
        <h3>Login.ascx.cs
</h3>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3dd0ffef-512f-4f41-908f-26b340668e45" class="wlWriterEditableSmartContent">
          <pre class="brush: c#;">protected void lgnForm_LoggedIn(object sender, EventArgs e)
{
    //If the user has a basket, wire up the shipping address with their last order details
    var basket = SiteContext.Current.OrderContext.GetBasket(true);
    if (basket != null)
    {
        //Get the customers current order
        var po = basket.PurchaseOrder;
        //Look for a shipping address
        var add = po.GetBillingAddress();
        //We only need to assign the address if there isn't already one assigned to this order
        if (add == null)
        {
            //Get the customer who's just logged in
            var mem = Membership.GetUser(lgnForm.UserName);
            //To be safe check that we have a member
            if (mem != null)
            {
                //Find the customer
                var customer = Customer.ForUmbracoMember(Convert.ToInt32(mem.ProviderUserKey));
                if (customer != null)
                {
                    //Get the customer's most recent address
                    var previousAddress = customer.Addresses.ToList().LastOrDefault(a =&gt; a.AddressName == "Billing");
                    //If you want to get the customer's first address just uncomment this line
                    //var previousAddress = customer.GetAddress("Billing");

                    //Populate the billing address with the address)
                    if (previousAddress != null)
                    {
                        OrderAddress address = new OrderAddress
                                {
                                    FirstName = previousAddress.FirstName,
                                    LastName = previousAddress.LastName,
                                    EmailAddress = previousAddress.EmailAddress,
                                    PhoneNumber = previousAddress.PhoneNumber,
                                    MobilePhoneNumber = previousAddress.MobilePhoneNumber,
                                    CompanyName = previousAddress.CompanyName,
                                    Line1 = previousAddress.Line1,
                                    Line2 = previousAddress.Line2,
                                    PostalCode = previousAddress.PostalCode,
                                    City = previousAddress.City,
                                    State = previousAddress.State,
                                    Attention = previousAddress.Attention,
                                    CountryId = previousAddress.CountryId,
                                    AddressName = "Billing",
                                    OrderId = new int?(po.OrderId)
                                };
                        //Store the address in the database
                        address.Save();
                        //Assign the address to the purchase order
                        po.BillingAddressId = new int?(address.OrderAddressId);
                        //Save the purchase order (shopping cart)
                        po.Save();
                    }
                }
            }
        }
    }
}
</pre>
        </div>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=f136b7cb-f755-4011-83f2-a1e2192fd666" />
      </body>
      <title>Retrieve the customer’s last address when logging into uCommerce</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,f136b7cb-f755-4011-83f2-a1e2192fd666.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2010/10/26/RetrieveTheCustomersLastAddressWhenLoggingIntoUCommerce.aspx</link>
      <pubDate>Tue, 26 Oct 2010 10:31:55 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="header[1]" border="0" alt="header[1]" align="right" src="http://blogs.thesitedoctor.co.uk/tim/images/64eb161c0baa_93C0/header1.jpg" width="240" height="320" /&gt;Probably
one of the most common features of an ecommerce systems is to "retrieve my details"
when logging in -after all that's why you create an account with the seller isn't
it?
&lt;/p&gt;
&lt;p&gt;
Out of the box, &lt;a title="e-commerce package for Umbraco" href="http://www.ucommerce.dk" target="_blank"&gt;uCommerce&lt;/a&gt; has
XSLT to retrieve the customer's last x addresses but one thing it didn't do was automatically
re-assign the customer's details when logging in using the built in Umbraco membership
code so we need to work around it ourselves -don't worry, it's not too hard (all the
code is below for you).
&lt;/p&gt;
&lt;h2&gt;Background
&lt;/h2&gt;
&lt;p&gt;
All customer addresses are stored in the uCommerce_Address table automatically, there
should be one unique address per customer however if you're on an earlier release
you may find you have several copies of the same address for each customer -this is
a bug that's been sorted in v1.0.5.0 so upgrade if you can.
&lt;/p&gt;
&lt;p&gt;
Now you'd be forgiven for thinking that you can just select the address from the uCommerce_Address
table and then assign the id to the BillingAddressId property of your purchase order
however if you do that, you'll find you get the error:
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d9065df3-b3b8-496d-a9a1-63b491ac4cd1" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: text;"&gt;The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_uCommerce_PurchaseOrder_uCommerce_OrderAddress". 
The conflict occurred in database "CommsReadyCMS", table "dbo.uCommerce_OrderAddress", column 'OrderAddressId'.
The statement has been terminated.&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
You'll get this because there is also a second table involved -uCommerce_OrderAddress.
uCommerce_OrderAddress stores the actual address used throughout the order process
incase the customer changes an address in the future, the order will always have the
correct address.
&lt;/p&gt;
&lt;h2&gt;The Solution
&lt;/h2&gt;
&lt;p&gt;
Working around this isn't actually too difficult as mentioned before. The easiest
solution is to create a new User Control in Visual Studio (I'll call mine login.ascx)
and hook into the LoggedIn event. Once logged in, get the Umbraco member and from
that, get the customer's billing address.
&lt;/p&gt;
&lt;p&gt;
There's one caveat that I found with uCommerce and that's the way it gets the address.
At the moment, there is a function on customer "GetAddress", this is great however
if you check out the code it calls, it actually gets the customer's first address
from the database -rather than the last address used. I don't think this is a bug
as in most cases the first address you enter is your main address. I'll blog separately
about managing a default address within the members section.
&lt;/p&gt;
&lt;p&gt;
The code below however retrieves the most recently added address from the database
&lt;/p&gt;
&lt;h3&gt;Login.ascx
&lt;/h3&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d68c8cf3-8452-49f9-b0bb-8289818fa29a" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: html;"&gt;&amp;lt;asp:literal runat="server" ID="litLoggedIn" /&amp;gt;
&amp;lt;asp:literal runat="server" ID="litLoggedOut" /&amp;gt;
&amp;lt;asp:Login runat="server" id="lgnForm" CssClass="checkout-details" 
	DisplayRememberMe="false" TitleText="" OnLoggedIn="lgnForm_LoggedIn"
	UserNameLabelText="Email Address" /&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Login.ascx.cs
&lt;/h3&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3dd0ffef-512f-4f41-908f-26b340668e45" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: c#;"&gt;protected void lgnForm_LoggedIn(object sender, EventArgs e)
{
    //If the user has a basket, wire up the shipping address with their last order details
    var basket = SiteContext.Current.OrderContext.GetBasket(true);
    if (basket != null)
    {
        //Get the customers current order
        var po = basket.PurchaseOrder;
        //Look for a shipping address
        var add = po.GetBillingAddress();
        //We only need to assign the address if there isn't already one assigned to this order
        if (add == null)
        {
            //Get the customer who's just logged in
            var mem = Membership.GetUser(lgnForm.UserName);
            //To be safe check that we have a member
            if (mem != null)
            {
                //Find the customer
                var customer = Customer.ForUmbracoMember(Convert.ToInt32(mem.ProviderUserKey));
                if (customer != null)
                {
                    //Get the customer's most recent address
                    var previousAddress = customer.Addresses.ToList().LastOrDefault(a =&amp;gt; a.AddressName == "Billing");
                    //If you want to get the customer's first address just uncomment this line
                    //var previousAddress = customer.GetAddress("Billing");

                    //Populate the billing address with the address)
                    if (previousAddress != null)
                    {
                        OrderAddress address = new OrderAddress
                                {
                                    FirstName = previousAddress.FirstName,
                                    LastName = previousAddress.LastName,
                                    EmailAddress = previousAddress.EmailAddress,
                                    PhoneNumber = previousAddress.PhoneNumber,
                                    MobilePhoneNumber = previousAddress.MobilePhoneNumber,
                                    CompanyName = previousAddress.CompanyName,
                                    Line1 = previousAddress.Line1,
                                    Line2 = previousAddress.Line2,
                                    PostalCode = previousAddress.PostalCode,
                                    City = previousAddress.City,
                                    State = previousAddress.State,
                                    Attention = previousAddress.Attention,
                                    CountryId = previousAddress.CountryId,
                                    AddressName = "Billing",
                                    OrderId = new int?(po.OrderId)
                                };
                        //Store the address in the database
                        address.Save();
                        //Assign the address to the purchase order
                        po.BillingAddressId = new int?(address.OrderAddressId);
                        //Save the purchase order (shopping cart)
                        po.Save();
                    }
                }
            }
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=f136b7cb-f755-4011-83f2-a1e2192fd666" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,f136b7cb-f755-4011-83f2-a1e2192fd666.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>eCommerce</category>
      <category>The Site Doctor</category>
      <category>uCommerce</category>
      <category>Umbraco</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=6a9ca083-94b9-4ba3-b7e6-d29948179db9</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,6a9ca083-94b9-4ba3-b7e6-d29948179db9.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,6a9ca083-94b9-4ba3-b7e6-d29948179db9.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=6a9ca083-94b9-4ba3-b7e6-d29948179db9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ever needed to take a large list and split it into smaller subsets of data for processing?
Well this is the Extension Method for you. Tonight we had to split a small dataset
(500 items) into even smaller sets of 10 so the provider’s web service wouldn’t timeout.
</p>
        <p>
Seeing as I was going to miss out on my evening, I thought I’d see if I could do it
a little differently using Linq and this is what I came up with:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:edfa829e-a3df-4997-be7e-4316894bab44" class="wlWriterEditableSmartContent">
          <pre class="brush: c#;">/// &lt;summary&gt;
/// Simple method to chunk a source IEnumerable into smaller (more manageable) lists
/// &lt;/summary&gt;
/// &lt;param name="source"&gt;The large IEnumerable to split&lt;/param&gt;
/// &lt;param name="chunkSize"&gt;The maximum number of items each subset should contain&lt;/param&gt;
/// &lt;returns&gt;An IEnumerable of the original source IEnumerable in bite size chunks&lt;/returns&gt;
public static IEnumerable&lt;IEnumerable&lt;TSource&gt;&gt; ChunkData&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source, int chunkSize)
{
    for (int i = 0; i &lt; source.Count(); i += chunkSize)
        yield return source.Skip(i).Take(chunkSize);
} 
</pre>
        </div>
        <p>
It should extend any IEnumerable and allow you to split it into smaller chunks which
you can then process to your heart’s content.
</p>
        <p>
Here’s a quick example of it in use:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3f0bfd82-a5c2-45bf-9584-48811d7f8f46" class="wlWriterEditableSmartContent">
          <pre class="brush: c#;">var list = new List&lt;string&gt;() { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10" };
Console.WriteLine("Original list is {0} items", list.Count);
var chunked = list.ChunkData(3);
Console.WriteLine("Returned the data in {0} subsets", chunked.Count());
int i = 1;
foreach (var subset in chunked)
{
    Console.WriteLine("{0} items are in subset #{1}", subset.Count(), i++);
    int si = 1;
    foreach (var s in subset)
        Console.WriteLine("\t\tItem #{0}: {1}", si++, s);
}
</pre>
        </div>
        <p>
And this will output
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b91a7f83-6305-4649-af61-23796d4215fd" class="wlWriterEditableSmartContent">
          <pre class="brush: text;">Original list is 10 items
Returned the data in 4 subsets
3 items are in subset #1
		Item #1: Item 1
		Item #2: Item 2
		Item #3: Item 3
3 items are in subset #2
		Item #1: Item 4
		Item #2: Item 5
		Item #3: Item 6
3 items are in subset #3
		Item #1: Item 7
		Item #2: Item 8
		Item #3: Item 9
1 items are in subset #4
		Item #1: Item 10
</pre>
        </div>
        <p>
2 lines of code to do all that work -Neat
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=6a9ca083-94b9-4ba3-b7e6-d29948179db9" />
      </body>
      <title>Using Linq and Extension Methods to chunk large data sets</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,6a9ca083-94b9-4ba3-b7e6-d29948179db9.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2010/08/12/UsingLinqAndExtensionMethodsToChunkLargeDataSets.aspx</link>
      <pubDate>Thu, 12 Aug 2010 08:32:44 GMT</pubDate>
      <description>&lt;p&gt;
Ever needed to take a large list and split it into smaller subsets of data for processing?
Well this is the Extension Method for you. Tonight we had to split a small dataset
(500 items) into even smaller sets of 10 so the provider’s web service wouldn’t timeout.
&lt;/p&gt;
&lt;p&gt;
Seeing as I was going to miss out on my evening, I thought I’d see if I could do it
a little differently using Linq and this is what I came up with:
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:edfa829e-a3df-4997-be7e-4316894bab44" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: c#;"&gt;/// &amp;lt;summary&amp;gt;
/// Simple method to chunk a source IEnumerable into smaller (more manageable) lists
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name="source"&amp;gt;The large IEnumerable to split&amp;lt;/param&amp;gt;
/// &amp;lt;param name="chunkSize"&amp;gt;The maximum number of items each subset should contain&amp;lt;/param&amp;gt;
/// &amp;lt;returns&amp;gt;An IEnumerable of the original source IEnumerable in bite size chunks&amp;lt;/returns&amp;gt;
public static IEnumerable&amp;lt;IEnumerable&amp;lt;TSource&amp;gt;&amp;gt; ChunkData&amp;lt;TSource&amp;gt;(this IEnumerable&amp;lt;TSource&amp;gt; source, int chunkSize)
{
    for (int i = 0; i &amp;lt; source.Count(); i += chunkSize)
        yield return source.Skip(i).Take(chunkSize);
} 
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
It should extend any IEnumerable and allow you to split it into smaller chunks which
you can then process to your heart’s content.
&lt;/p&gt;
&lt;p&gt;
Here’s a quick example of it in use:
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3f0bfd82-a5c2-45bf-9584-48811d7f8f46" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: c#;"&gt;var list = new List&amp;lt;string&amp;gt;() { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10" };
Console.WriteLine("Original list is {0} items", list.Count);
var chunked = list.ChunkData(3);
Console.WriteLine("Returned the data in {0} subsets", chunked.Count());
int i = 1;
foreach (var subset in chunked)
{
    Console.WriteLine("{0} items are in subset #{1}", subset.Count(), i++);
    int si = 1;
    foreach (var s in subset)
        Console.WriteLine("\t\tItem #{0}: {1}", si++, s);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
And this will output
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b91a7f83-6305-4649-af61-23796d4215fd" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: text;"&gt;Original list is 10 items
Returned the data in 4 subsets
3 items are in subset #1
		Item #1: Item 1
		Item #2: Item 2
		Item #3: Item 3
3 items are in subset #2
		Item #1: Item 4
		Item #2: Item 5
		Item #3: Item 6
3 items are in subset #3
		Item #1: Item 7
		Item #2: Item 8
		Item #3: Item 9
1 items are in subset #4
		Item #1: Item 10
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
2 lines of code to do all that work -Neat
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=6a9ca083-94b9-4ba3-b7e6-d29948179db9" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,6a9ca083-94b9-4ba3-b7e6-d29948179db9.aspx</comments>
      <category>ASP.Net</category>
      <category>ASP.Net/Web Service</category>
      <category>C#</category>
      <category>The Site Doctor</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=fa16c54e-8da8-44bd-8ac3-1efeb84cd15f</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,fa16c54e-8da8-44bd-8ac3-1efeb84cd15f.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,fa16c54e-8da8-44bd-8ac3-1efeb84cd15f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=fa16c54e-8da8-44bd-8ac3-1efeb84cd15f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You may have come across this error once or twice while deploying your project if
you develop using Web Deployment Projects. It's usually caused when you copy and paste
a page and forget to update both the page declaration and code behind file.
</p>
        <h2>But the website builds!?!
</h2>
        <p>
You don't usually get the ILMerge error until you build the web deployment project
because when you build a website directly, it doesn't compile all the code into a
single assembly so the class names are seen as different. Part of the web deployment
process is to compile all the websites code into a single assembly hence the duplicate
references.
</p>
        <h2>What's the solution?
</h2>
        <p>
It's surprisingly simple, all you need to do is open up the offending aspx and aspx.cs
files and update two lines:
</p>
        <p>
1. In the code behind file, rename the partial class. By default Visual Studio will
name the class FolderName_Pagename which should result in a unique name
</p>
        <p>
2. The page declaration (first line of the page) in the aspx file. You have to make
sure that both the Inherits attribute and CodeBehind reference are correct.
</p>
        <p>
Tip: To avoid confusing yourself, open the files independently using the solution
browser because if you open the aspx and press F7 to switch to the code behind file
before updating the page declaration, you'll end up editing the page you copied rather
than the copy. 
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=fa16c54e-8da8-44bd-8ac3-1efeb84cd15f" />
      </body>
      <title>Error 11: An error occurred when merging assemblies: ILMerge.Merge: ERROR!!: Duplicate type 'xyz' found in assembly 'App_Web_rh2sxhkc'. aspnet_merge</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,fa16c54e-8da8-44bd-8ac3-1efeb84cd15f.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2010/04/18/Error11AnErrorOccurredWhenMergingAssembliesILMergeMergeERRORDuplicateTypeXyzFoundInAssemblyAppWebrh2sxhkcAspnetmerge.aspx</link>
      <pubDate>Sun, 18 Apr 2010 11:47:20 GMT</pubDate>
      <description>&lt;p&gt;
You may have come across this error once or twice while deploying your project if
you develop using Web Deployment Projects. It's usually caused when you copy and paste
a page and forget to update both the page declaration and code behind file.
&lt;/p&gt;
&lt;h2&gt;But the website builds!?!
&lt;/h2&gt;
&lt;p&gt;
You don't usually get the ILMerge error until you build the web deployment project
because when you build a website directly, it doesn't compile all the code into a
single assembly so the class names are seen as different. Part of the web deployment
process is to compile all the websites code into a single assembly hence the duplicate
references.
&lt;/p&gt;
&lt;h2&gt;What's the solution?
&lt;/h2&gt;
&lt;p&gt;
It's surprisingly simple, all you need to do is open up the offending aspx and aspx.cs
files and update two lines:
&lt;/p&gt;
&lt;p&gt;
1. In the code behind file, rename the partial class. By default Visual Studio will
name the class FolderName_Pagename which should result in a unique name
&lt;/p&gt;
&lt;p&gt;
2. The page declaration (first line of the page) in the aspx file. You have to make
sure that both the Inherits attribute and CodeBehind reference are correct.
&lt;/p&gt;
&lt;p&gt;
Tip: To avoid confusing yourself, open the files independently using the solution
browser because if you open the aspx and press F7 to switch to the code behind file
before updating the page declaration, you'll end up editing the page you copied rather
than the copy. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=fa16c54e-8da8-44bd-8ac3-1efeb84cd15f" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,fa16c54e-8da8-44bd-8ac3-1efeb84cd15f.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Software/Visual Studio</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=10ba51a5-14c9-47ac-a2f3-8b28e981103d</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,10ba51a5-14c9-47ac-a2f3-8b28e981103d.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,10ba51a5-14c9-47ac-a2f3-8b28e981103d.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=10ba51a5-14c9-47ac-a2f3-8b28e981103d</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This was one of those irritating errors that you get when you're trying to do something
quickly before you go home and you can't for the life of you fathom the issue. 
</p>
        <p>
I had the following code (simple enough):
</p>
        <div class="code">
          <img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />FileInfo
f = <span style="color: #0000ff">new</span> FileInfo(<span style="color: #800000">"</span><span style="color: #800000">##</span> <span style="color: #800000">File's</span> <span style="color: #800000">Path</span> <span style="color: #800000">"</span>); 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><span style="color: #0000ff">try</span><br /><div style="display: none" id="closed633777574815880680_3"><img onclick="showHideCodeDiv('633777574815880680_3', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /><b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633777574815880680_3"><img onclick="showHideCodeDiv('633777574815880680_3', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" />{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />   
f.MoveTo(<span style="color: #800000">"</span><span style="color: #800000">##</span> <span style="color: #800000">DROP</span> <span style="color: #800000">OFF</span> <span style="color: #800000">DIRECTORY</span> <span style="color: #800000">##</span><span style="color: #800000">"</span>)); 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />}
</div><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><span style="color: #0000ff">catch</span> (<span style="color: #008b8b">Exception</span> e) 
<br /><div style="display: none" id="closed633777574815880680_7"><img onclick="showHideCodeDiv('633777574815880680_7', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /><b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633777574815880680_7"><img onclick="showHideCodeDiv('633777574815880680_7', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" />{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />    <span style="color: #008000">//</span><span style="color: #008000">Log</span> <span style="color: #008000">the</span> <span style="color: #008000">exception</span> <span style="color: #008000">here</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />}
</div></div>
        <p>
The fix was simple, you just have to remember to specify the new filename too. (DOH!).
Here's the "correct" code.
</p>
        <div class="code">
          <img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />FileInfo
f = <span style="color: #0000ff">new</span> FileInfo(<span style="color: #800000">"##
File's Path</span> <span style="color: #800000">"</span>); 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><span style="color: #0000ff">try</span><br /><div style="display: none" id="closed633777574273676465_3"><img onclick="showHideCodeDiv('633777574273676465_3', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /><b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633777574273676465_3"><img onclick="showHideCodeDiv('633777574273676465_3', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" />{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />   
f.MoveTo(Path.Combine(<span style="color: #800000">"## DROP OFF DIRECTORY ##"</span>,
f.Name)); 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />}
</div><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><span style="color: #0000ff">catch</span> (<span style="color: #008b8b">Exception</span> e) 
<br /><div style="display: none" id="closed633777574273676465_7"><img onclick="showHideCodeDiv('633777574273676465_7', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /><b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633777574273676465_7"><img onclick="showHideCodeDiv('633777574273676465_7', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" />{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />    <span style="color: #008000">//Log
the exception here</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />}
</div></div>
        <p>
Hope that helps you out ;)
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=10ba51a5-14c9-47ac-a2f3-8b28e981103d" />
      </body>
      <title>C# FileInfo.MoveTo Cannot create a file when that file already exists exception</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,10ba51a5-14c9-47ac-a2f3-8b28e981103d.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2009/05/12/CFileInfoMoveToCannotCreateAFileWhenThatFileAlreadyExistsException.aspx</link>
      <pubDate>Tue, 12 May 2009 19:39:35 GMT</pubDate>
      <description>&lt;p&gt;
This was one of those irritating errors that you get when you're trying to do something
quickly before you go home and you can't for the life of you fathom the issue. 
&lt;/p&gt;
&lt;p&gt;
I had the following code (simple enough):
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;FileInfo
f = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FileInfo(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;##&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;File's&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;Path&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt; 
&lt;br /&gt;
&lt;div style="display: none" id="closed633777574815880680_3"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574815880680_3&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633777574815880680_3"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574815880680_3&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" /&gt;{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;
f.MoveTo(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;##&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;DROP&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;OFF&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;DIRECTORY&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;##&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;)); 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;}
&lt;/div&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (&lt;span style="color: #008b8b"&gt;Exception&lt;/span&gt; e) 
&lt;br /&gt;
&lt;div style="display: none" id="closed633777574815880680_7"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574815880680_7&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633777574815880680_7"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574815880680_7&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" /&gt;{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;Log&lt;/span&gt;&amp;#160;&lt;span style="color: #008000"&gt;the&lt;/span&gt;&amp;#160;&lt;span style="color: #008000"&gt;exception&lt;/span&gt;&amp;#160;&lt;span style="color: #008000"&gt;here&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The fix was simple, you just have to remember to specify the new filename too. (DOH!).
Here's the "correct" code.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;FileInfo
f = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FileInfo(&lt;span style="color: #800000"&gt;&amp;quot;##
File's Path&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt; 
&lt;br /&gt;
&lt;div style="display: none" id="closed633777574273676465_3"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574273676465_3&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633777574273676465_3"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574273676465_3&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" /&gt;{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;
f.MoveTo(Path.Combine(&lt;span style="color: #800000"&gt;&amp;quot;## DROP OFF DIRECTORY ##&amp;quot;&lt;/span&gt;,
f.Name)); 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;}
&lt;/div&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (&lt;span style="color: #008b8b"&gt;Exception&lt;/span&gt; e) 
&lt;br /&gt;
&lt;div style="display: none" id="closed633777574273676465_7"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574273676465_7&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633777574273676465_7"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633777574273676465_7&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" /&gt;{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;//Log
the exception here&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Hope that helps you out ;)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=10ba51a5-14c9-47ac-a2f3-8b28e981103d" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,10ba51a5-14c9-47ac-a2f3-8b28e981103d.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=d1197af5-d41e-4cc0-85d5-8b12289fa009</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,d1197af5-d41e-4cc0-85d5-8b12289fa009.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,d1197af5-d41e-4cc0-85d5-8b12289fa009.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=d1197af5-d41e-4cc0-85d5-8b12289fa009</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ok it might be a little less than half side but it's near enough. I've been sitting
on this for a while and needed to reference it for someone so I thought I'd post quickly
about it. One of the most common complaints about .Net is that you have a lot of hidden
"content" by the way of hidden inputs and the likes throughout your site. This can
easily get corrupt on postback/slowdown the page load times etc.
</p>
        <p>
Really you should be optimising each control on the page (enabling/disabling where
relevant) but if you want to cheat (lets face it, we all do):
</p>
        <ol>
          <li>
Download the files: <a href="http://blogs.thesitedoctor.co.uk/tim/files/PageStateAdapterv1.0.zip">PageStateAdapterv1.0.zip
(3KB)</a></li>
          <li>
Put PageStateAdapter.browser into your /App_Browsers/ folder (or create one and add
it) 
</li>
          <li>
Put TSDPageStateAdapter.dll into your website's /bin/ folder 
</li>
          <li>
Load up your website and checkout your ViewState :) 
</li>
        </ol>
        <p>
Incase you're interested in the source for it:
</p>
        <div class="code">
          <h2>PageStateAdapter.browser
</h2>
          <img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />
          <span style="color: #0000ff">&lt;</span>
          <span style="color: #8b0000">browsers</span>
          <span style="color: #0000ff">&gt;</span>
          <br />
          <img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />    <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">browser</span><span style="color: #ff0000"> refID</span><span style="color: #8b0000">=</span><span style="color: #0000ff">"</span><span style="color: #0000ff">Default</span><span style="color: #0000ff">"</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />        <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">controlAdapters</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />            <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">adapter</span><span style="color: #ff0000"> controlType</span><span style="color: #8b0000">=</span><span style="color: #0000ff">"</span><span style="color: #0000ff">System.Web.UI.Page</span><span style="color: #0000ff">"</span><span style="color: #ff0000"> adapterType</span><span style="color: #8b0000">=</span><span style="color: #0000ff">"</span><span style="color: #0000ff">TheSiteDoctor.PageStateAdapter.PageStateAdapter</span><span style="color: #0000ff">"</span> <span style="color: #8b0000">/</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />        <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">/controlAdapters</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />        <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">capabilities</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />            <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">capability</span><span style="color: #ff0000"> name</span><span style="color: #8b0000">=</span><span style="color: #0000ff">"</span><span style="color: #0000ff">requiresControlStateInSession</span><span style="color: #0000ff">"</span><span style="color: #ff0000"> value</span><span style="color: #8b0000">=</span><span style="color: #0000ff">"</span><span style="color: #0000ff">true</span><span style="color: #0000ff">"</span> <span style="color: #8b0000">/</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />        <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">/capabilities</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />    <span style="color: #0000ff">&lt;</span><span style="color: #8b0000">/browser</span><span style="color: #0000ff">&gt;</span><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #8b0000">/browsers</span><span style="color: #0000ff">&gt;</span></div>
        <div class="code">
          <h2>PageStateAdapter.cs
</h2>
          <img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" />
          <span style="color: #0000ff">using</span> System.Web.UI; 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /><span style="color: #0000ff">namespace</span> TheSiteDoctor.PageStateAdapter 
<br /><div style="display: none" id="closed633755787600153334_4"><img onclick="showHideCodeDiv('633755787600153334_4', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /><b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633755787600153334_4"><img onclick="showHideCodeDiv('633755787600153334_4', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" />{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />    <span style="color: #0000ff">public
class</span> PageStateAdapter : System.Web.UI.Adapters.PageAdapter 
<br /><div style="display: none" id="closed633755787600153334_6"><img onclick="showHideCodeDiv('633755787600153334_6', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" />    <b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633755787600153334_6"><img onclick="showHideCodeDiv('633755787600153334_6', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" />   
{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />        <span style="color: #0000ff">public
override</span> PageStatePersister GetStatePersister() 
<br /><div style="display: none" id="closed633755787600153334_8"><img onclick="showHideCodeDiv('633755787600153334_8', false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" />        <b><span style="color: #00008b">{...}</span></b></div><div style="display: block" id="open633755787600153334_8"><img onclick="showHideCodeDiv('633755787600153334_8', true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" />       
{ 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" />            <span style="color: #0000ff">return
new</span> SessionPageStatePersister(<span style="color: #0000ff">this</span>.Page); 
<br /><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />       
}
</div><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />   
}
</div><img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" />}
</div></div>
        <p>
The best example of how much this reduces ViewState by is when you add a large DataGrid
to your site.
</p>
        <p>
Post files: <a href="http://blogs.thesitedoctor.co.uk/tim/files/PageStateAdapterv1.0.zip">PageStateAdapterv1.0.zip
(3KB)</a></p>
        <p>
          <strong>Update:</strong> Apologies to those of you who downloaded and found it wouldn't
compile, the .browser file was a little off (missing the second "PageStateAdapter").
I've updated it and changed the zip file download. Enjoy!
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=d1197af5-d41e-4cc0-85d5-8b12289fa009" />
      </body>
      <title>Quick ASP.Net tip: Half your page size in ASP.Net instantly</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,d1197af5-d41e-4cc0-85d5-8b12289fa009.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2009/04/17/QuickASPNetTipHalfYourPageSizeInASPNetInstantly.aspx</link>
      <pubDate>Fri, 17 Apr 2009 14:53:05 GMT</pubDate>
      <description>&lt;p&gt;
Ok it might be a little less than half side but it's near enough. I've been sitting
on this for a while and needed to reference it for someone so I thought I'd post quickly
about it. One of the most common complaints about .Net is that you have a lot of hidden
"content" by the way of hidden inputs and the likes throughout your site. This can
easily get corrupt on postback/slowdown the page load times etc.
&lt;/p&gt;
&lt;p&gt;
Really you should be optimising each control on the page (enabling/disabling where
relevant) but if you want to cheat (lets face it, we all do):
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Download the files: &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/PageStateAdapterv1.0.zip"&gt;PageStateAdapterv1.0.zip
(3KB)&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
Put PageStateAdapter.browser into your /App_Browsers/ folder (or create one and add
it) 
&lt;/li&gt;
&lt;li&gt;
Put TSDPageStateAdapter.dll into your website's /bin/ folder 
&lt;/li&gt;
&lt;li&gt;
Load up your website and checkout your ViewState :) 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Incase you're interested in the source for it:
&lt;/p&gt;
&lt;div class="code"&gt;
&lt;h2&gt;PageStateAdapter.browser
&lt;/h2&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;browsers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;browser&lt;/span&gt;&lt;span style="color: #ff0000"&gt; refID&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Default&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;controlAdapters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;adapter&lt;/span&gt;&lt;span style="color: #ff0000"&gt; controlType&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;System.Web.UI.Page&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; adapterType&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;TheSiteDoctor.PageStateAdapter.PageStateAdapter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/controlAdapters&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;capabilities&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;capability&lt;/span&gt;&lt;span style="color: #ff0000"&gt; name&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;requiresControlStateInSession&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt; value&lt;/span&gt;&lt;span style="color: #8b0000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #8b0000"&gt;/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/capabilities&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/browser&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #8b0000"&gt;/browsers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/div&gt;
&lt;div class="code"&gt;
&lt;h2&gt;PageStateAdapter.cs
&lt;/h2&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Web.UI; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt; 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" /&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; TheSiteDoctor.PageStateAdapter 
&lt;br /&gt;
&lt;div style="display: none" id="closed633755787600153334_4"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633755787600153334_4&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633755787600153334_4"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633755787600153334_4&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" /&gt;{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public
class&lt;/span&gt; PageStateAdapter : System.Web.UI.Adapters.PageAdapter 
&lt;br /&gt;
&lt;div style="display: none" id="closed633755787600153334_6"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633755787600153334_6&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633755787600153334_6"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633755787600153334_6&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public
override&lt;/span&gt; PageStatePersister GetStatePersister() 
&lt;br /&gt;
&lt;div style="display: none" id="closed633755787600153334_8"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633755787600153334_8&amp;#39;, false)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div style="display: block" id="open633755787600153334_8"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633755787600153334_8&amp;#39;, true)" align="top" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/I.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;return
new&lt;/span&gt; SessionPageStatePersister(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page); 
&lt;br /&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img align="top" src="http://blogs.sitedoc.co.uk/img/sc/L.gif" /&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The best example of how much this reduces ViewState by is when you add a large DataGrid
to your site.
&lt;/p&gt;
&lt;p&gt;
Post files: &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/PageStateAdapterv1.0.zip"&gt;PageStateAdapterv1.0.zip
(3KB)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Apologies to those of you who downloaded and found it wouldn't
compile, the .browser file was a little off (missing the second "PageStateAdapter").
I've updated it and changed the zip file download. Enjoy!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=d1197af5-d41e-4cc0-85d5-8b12289fa009" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,d1197af5-d41e-4cc0-85d5-8b12289fa009.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Development</category>
      <category>The Site Doctor</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=82ed85a4-7066-4e46-9256-361685165d44</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,82ed85a4-7066-4e46-9256-361685165d44.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,82ed85a4-7066-4e46-9256-361685165d44.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=82ed85a4-7066-4e46-9256-361685165d44</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the issues I had with <a href="http://www.jforsythe.com/jforsythe/proj_dasblog.aspx">John
Forsythe's Recent Comments macro for DasBlog</a> was that the dasBlog recent comments
weren't ordered by date (descending). I found that as people commented on older posts
they were getting buried which irritated me as many were very still valid comments.
</p>
        <p>
The fix was actually fairly simple, it was just a matter of adding  a sort and
thanks to Lamba expressions, this is something we can do fairly simply. If you want
to add recent comments to your dasBlog installation, use the following macro:
</p>
        <div class="code">
          <h2>Recent Comments Macro
</h2>
          <img src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" />
          <span style="color: #0000ff">public
virtual</span> Control RecentComments(<span style="color: #0000ff">int</span> count, <span style="color: #0000ff">int</span> adminComments, <span style="color: #0000ff">int</span> trimTitle, <span style="color: #0000ff">int</span> trimContent, <span style="color: #0000ff">int</span> trimAuthor, <span style="color: #0000ff">bool</span> showTitle, <span style="color: #0000ff">bool</span> showCommentText, <span style="color: #0000ff">bool</span> showCommentCount) 
<br /><div id="closed633704585927282959_2" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_2', false)" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_2" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_2', true)" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" align="top" />{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">int</span> commentsToShow; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">int</span> totalComments; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
CommentCollection allComments = <span style="color: #0000ff">this</span>.requestPage.DataService.GetAllComments(); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
totalComments = allComments.Count; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #008000">//Sort
the comments in date order (descending)</span><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
allComments.Sort((c1, c2) =&gt; c1.CreatedUtc.CompareTo(c2.CreatedUtc)); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">if</span> (!<span style="color: #0000ff">this</span>.requestPage.HideAdminTools
&amp;&amp; SiteSecurity.IsInRole(<span style="color: #800000">"admin"</span>)) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />       
commentsToShow = totalComments - adminComments; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">else</span><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />       
commentsToShow = totalComments - count; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">if</span> (commentsToShow
&lt; <span style="color: #008080">0</span>) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />       
commentsToShow = <span style="color: #008080">0</span>; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
StringBuilder sb = <span style="color: #0000ff">new</span> StringBuilder(); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
sb.AppendLine(<span style="color: #800000">"&lt;div class=\"recentComments\"&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">if</span> (showCommentCount) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />       
sb.AppendFormat(<span style="color: #800000">"&lt;div class=\"totalComments\"&gt;Total
Comments:</span> <span style="color: #800000">{0}&lt;/div&gt;"</span>, totalComments); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
sb.AppendLine(<span style="color: #800000">"&lt;ul class=\"comments\"&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><div id="closed633704585927282959_29" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_29', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />    <b><span style="color: #00008b">Loop
through the comments</span></b></div><div id="open633704585927282959_29" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_29', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />    <b><span style="color: #0000ff">#region</span></b> Loop
through the comments 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i
= totalComments - <span style="color: #008080">1</span>; i &gt;= commentsToShow; i--) 
<br /><div id="closed633704585927282959_32" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_32', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />    <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_32" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_32', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />   
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />       
Comment current = allComments[i]; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">bool</span> showComment; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">if</span> (!current.IsPublic
|| (current.SpamState == SpamState.Spam)) 
<br /><div id="closed633704585927282959_37" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_37', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />        <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_37" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_37', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />       
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> (!<span style="color: #0000ff">this</span>.requestPage.HideAdminTools
&amp;&amp; SiteSecurity.IsInRole(<span style="color: #800000">"admin"</span>)) 
<br /><div id="closed633704585927282959_39" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_39', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_39" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_39', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
showComment = <span style="color: #0000ff">true</span>; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">else</span><br /><div id="closed633704585927282959_43" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_43', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_43" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_43', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
showComment = <span style="color: #0000ff">false</span>; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">if</span> (commentsToShow
&gt; <span style="color: #008080">0</span>) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
commentsToShow--; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />       
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">else</span><br /><div id="closed633704585927282959_50" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_50', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />        <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_50" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_50', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />       
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
showComment = <span style="color: #0000ff">true</span>; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />       
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">if</span> (showComment) 
<br /><div id="closed633704585927282959_55" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_55', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />        <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_55" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_55', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />       
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> ((current.SpamState
== SpamState.Spam)) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"&lt;li class=\"spam\"&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">else
if</span> (!current.IsPublic) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"&lt;li class=\"hidden\"&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">else</span><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"&lt;li&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">string</span> link
= <span style="color: #008b8b">String</span>.Format(<span style="color: #800000">"{0}{1}{2}"</span>,
SiteUtilities.GetCommentViewUrl(current.TargetEntryId), <span style="color: #800000">"#"</span>,
current.EntryId); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">string</span> title
= current.TargetTitle; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">string</span> desc
= current.Content; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">string</span> author
= current.Author; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> (showTitle) 
<br /><div id="closed633704585927282959_69" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_69', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_69" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_69', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.AppendFormat(<span style="color: #800000">"&lt;div class=\"recent{0}CommentsTitle\"&gt;&lt;a
href=\"{1}\"&gt;</span><span style="color: #800000">"</span>, 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
current.SpamState, 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
link 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">if</span> ((title.Length
&gt; trimTitle) &amp;&amp; (trimTitle &gt; <span style="color: #008080">0</span>)) 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
sb.AppendFormat(<span style="color: #800000">"RE: {0}..."</span>, title.Substring(<span style="color: #008080">0</span>,
trimTitle)); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">else</span><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
sb.AppendFormat(<span style="color: #800000">"RE: {0}"</span>, title); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"&lt;/a&gt;&lt;/div&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> (showCommentText) 
<br /><div id="closed633704585927282959_84" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_84', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_84" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_84', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.AppendFormat(<span style="color: #800000">"&lt;div class=\"recentCommentsContent\"&gt;&lt;a
href=\"{0}\"&gt;</span><span style="color: #800000">"</span>, 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
link 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">if</span> ((desc.Length
&gt; trimContent) &amp;&amp; (trimContent &gt; <span style="color: #008080">0</span>)) 
<br /><div id="closed633704585927282959_90" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_90', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_90" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_90', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
sb.Append(desc.Substring(<span style="color: #008080">0</span>, trimContent)); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
sb.Append(<span style="color: #800000">"..."</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">else</span><br /><div id="closed633704585927282959_95" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_95', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_95" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_95', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
sb.Append(desc); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"&lt;/a&gt;&lt;/div&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
sb.Append(<span style="color: #800000">"&lt;div class=\"recentCommentsAuthor\"&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> ((author.Length
&gt; trimAuthor) &amp;&amp; (trimAuthor &gt; <span style="color: #008080">0</span>)) 
<br /><div id="closed633704585927282959_105" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_105', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_105" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_105', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">int</span> num3
= (trimAuthor &gt; author.Length) ? author.Length : trimAuthor; 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"by "</span> + author.Substring(<span style="color: #008080">0</span>,
num3)); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"..."</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">else</span><br /><div id="closed633704585927282959_111" style="display: none"><img onclick="showHideCodeDiv('633704585927282959_111', false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633704585927282959_111" style="display: block"><img onclick="showHideCodeDiv('633704585927282959_111', true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
sb.Append(<span style="color: #800000">"by "</span> + author); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
sb.Append(<span style="color: #800000">"&lt;/div&gt;&lt;/li&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />       
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />   
}
</div><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />    <b><span style="color: #0000ff">#endregion</span></b></div><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
sb.AppendLine(<span style="color: #800000">"&lt;/ul&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />   
sb.AppendLine(<span style="color: #800000">"&lt;/div&gt;"</span>); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">return
new</span> LiteralControl(sb.ToString()); 
<br /><img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />}
</div></div>
        <p>
I've since been working on extending it further so you can add a "All Comments" link
which I'll post up later as it needs a little more work :)
</p>
        <p>
If you want this wrapped up as a DLL let me know and I'll upload it.
</p>
        <p>
          <strong>Update 26th Feb 2009:</strong> You can <a href="http://blogs.thesitedoctor.co.uk/tim/files/TSDMacros_v1.1_20090226.zip">download
the dll here</a> (it's also got a few other things in there if you want to look around).
</p>
        <p>
          <strong>Update 27th Feb 2009:</strong> I noticed that the above code was messing up
everynow and again so I've updated it to use Linq instead which seems to work well.
I've updated the DLL but not the source yet.
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=82ed85a4-7066-4e46-9256-361685165d44" />
      </body>
      <title>Recent comments macro for DasBlog</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,82ed85a4-7066-4e46-9256-361685165d44.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2009/02/17/RecentCommentsMacroForDasBlog.aspx</link>
      <pubDate>Tue, 17 Feb 2009 09:25:05 GMT</pubDate>
      <description>&lt;p&gt;
One of the issues I had with &lt;a href="http://www.jforsythe.com/jforsythe/proj_dasblog.aspx"&gt;John
Forsythe's Recent Comments macro for DasBlog&lt;/a&gt; was that the dasBlog recent comments
weren't ordered by date (descending). I found that as people commented on older posts
they were getting buried which irritated me as many were very still valid comments.
&lt;/p&gt;
&lt;p&gt;
The fix was actually fairly simple, it was just a matter of adding&amp;#160; a sort and
thanks to Lamba expressions, this is something we can do fairly simply. If you want
to add recent comments to your dasBlog installation, use the following macro:
&lt;/p&gt;
&lt;div class="code"&gt;
&lt;h2&gt;Recent Comments Macro
&lt;/h2&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;public
virtual&lt;/span&gt; Control RecentComments(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; count, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; adminComments, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; trimTitle, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; trimContent, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; trimAuthor, &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; showTitle, &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; showCommentText, &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; showCommentCount) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_2" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_2&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" align="top" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_2" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_2&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" align="top" /&gt;{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; commentsToShow; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; totalComments; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
CommentCollection allComments = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.requestPage.DataService.GetAllComments(); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
totalComments = allComments.Count; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;//Sort
the comments in date order (descending)&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
allComments.Sort((c1, c2) =&amp;gt; c1.CreatedUtc.CompareTo(c2.CreatedUtc)); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.requestPage.HideAdminTools
&amp;amp;&amp;amp; SiteSecurity.IsInRole(&lt;span style="color: #800000"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;)) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
commentsToShow = totalComments - adminComments; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
commentsToShow = totalComments - count; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (commentsToShow
&amp;lt; &lt;span style="color: #008080"&gt;0&lt;/span&gt;) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
commentsToShow = &lt;span style="color: #008080"&gt;0&lt;/span&gt;; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
StringBuilder sb = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; StringBuilder(); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
sb.AppendLine(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;recentComments\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (showCommentCount) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.AppendFormat(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;totalComments\&amp;quot;&amp;gt;Total
Comments:&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;{0}&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;, totalComments); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
sb.AppendLine(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;ul class=\&amp;quot;comments\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;div id="closed633704585927282959_29" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_29&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;Loop
through the comments&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_29" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_29&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;#region&lt;/span&gt;&lt;/b&gt; Loop
through the comments 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i
= totalComments - &lt;span style="color: #008080"&gt;1&lt;/span&gt;; i &amp;gt;= commentsToShow; i--) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_32" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_32&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_32" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_32&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Comment current = allComments[i]; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; showComment; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!current.IsPublic
|| (current.SpamState == SpamState.Spam)) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_37" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_37&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_37" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_37&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.requestPage.HideAdminTools
&amp;amp;&amp;amp; SiteSecurity.IsInRole(&lt;span style="color: #800000"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;)) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_39" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_39&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_39" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_39&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
showComment = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633704585927282959_43" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_43&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_43" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_43&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
showComment = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (commentsToShow
&amp;gt; &lt;span style="color: #008080"&gt;0&lt;/span&gt;) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
commentsToShow--; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633704585927282959_50" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_50&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_50" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_50&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
showComment = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (showComment) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_55" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_55&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_55" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_55&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((current.SpamState
== SpamState.Spam)) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;li class=\&amp;quot;spam\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else
if&lt;/span&gt; (!current.IsPublic) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;li class=\&amp;quot;hidden\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;li&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; link
= &lt;span style="color: #008b8b"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #800000"&gt;&amp;quot;{0}{1}{2}&amp;quot;&lt;/span&gt;,
SiteUtilities.GetCommentViewUrl(current.TargetEntryId), &lt;span style="color: #800000"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;,
current.EntryId); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; title
= current.TargetTitle; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; desc
= current.Content; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; author
= current.Author; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (showTitle) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_69" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_69&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_69" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_69&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.AppendFormat(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;recent{0}CommentsTitle\&amp;quot;&amp;gt;&amp;lt;a
href=\&amp;quot;{1}\&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;, 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
current.SpamState, 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
link 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((title.Length
&amp;gt; trimTitle) &amp;amp;&amp;amp; (trimTitle &amp;gt; &lt;span style="color: #008080"&gt;0&lt;/span&gt;)) 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.AppendFormat(&lt;span style="color: #800000"&gt;&amp;quot;RE: {0}...&amp;quot;&lt;/span&gt;, title.Substring(&lt;span style="color: #008080"&gt;0&lt;/span&gt;,
trimTitle)); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.AppendFormat(&lt;span style="color: #800000"&gt;&amp;quot;RE: {0}&amp;quot;&lt;/span&gt;, title); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (showCommentText) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_84" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_84&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_84" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_84&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.AppendFormat(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;recentCommentsContent\&amp;quot;&amp;gt;&amp;lt;a
href=\&amp;quot;{0}\&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;, 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
link 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((desc.Length
&amp;gt; trimContent) &amp;amp;&amp;amp; (trimContent &amp;gt; &lt;span style="color: #008080"&gt;0&lt;/span&gt;)) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_90" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_90&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_90" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_90&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(desc.Substring(&lt;span style="color: #008080"&gt;0&lt;/span&gt;, trimContent)); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;...&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633704585927282959_95" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_95&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_95" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_95&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(desc); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;div class=\&amp;quot;recentCommentsAuthor\&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((author.Length
&amp;gt; trimAuthor) &amp;amp;&amp;amp; (trimAuthor &amp;gt; &lt;span style="color: #008080"&gt;0&lt;/span&gt;)) 
&lt;br /&gt;
&lt;div id="closed633704585927282959_105" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_105&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_105" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_105&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; num3
= (trimAuthor &amp;gt; author.Length) ? author.Length : trimAuthor; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;by &amp;quot;&lt;/span&gt; + author.Substring(&lt;span style="color: #008080"&gt;0&lt;/span&gt;,
num3)); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;...&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633704585927282959_111" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_111&amp;#39;, false)" src="http://blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633704585927282959_111" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633704585927282959_111&amp;#39;, true)" src="http://blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;by &amp;quot;&lt;/span&gt; + author); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
sb.Append(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
sb.AppendLine(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
sb.AppendLine(&lt;span style="color: #800000"&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;return
new&lt;/span&gt; LiteralControl(sb.ToString()); 
&lt;br /&gt;
&lt;img src="http://blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
I've since been working on extending it further so you can add a "All Comments" link
which I'll post up later as it needs a little more work :)
&lt;/p&gt;
&lt;p&gt;
If you want this wrapped up as a DLL let me know and I'll upload it.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update 26th Feb 2009:&lt;/strong&gt; You can &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/TSDMacros_v1.1_20090226.zip"&gt;download
the dll here&lt;/a&gt; (it's also got a few other things in there if you want to look around).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update 27th Feb 2009:&lt;/strong&gt; I noticed that the above code was messing up
everynow and again so I've updated it to use Linq instead which seems to work well.
I've updated the DLL but not the source yet.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=82ed85a4-7066-4e46-9256-361685165d44" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,82ed85a4-7066-4e46-9256-361685165d44.aspx</comments>
      <category>C#</category>
      <category>dasBlog</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=59e396af-2f03-4bce-a4b9-5651a5b7cf6c</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,59e396af-2f03-4bce-a4b9-5651a5b7cf6c.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,59e396af-2f03-4bce-a4b9-5651a5b7cf6c.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=59e396af-2f03-4bce-a4b9-5651a5b7cf6c</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I thought I'd share some festive "fun" today. For quite some time now I've hooked
into the build events within Visual Studio but I think this is just taking it too
far...
</p>
        <p>
          <a href="http://blogs.sitedoc.co.uk/tim/img/New Build Routine.png" rel="[lightbox]">
            <img height="72" src="http://farm4.static.flickr.com/3200/3111244018_81f4661a0e_m.jpg" width="240" />
          </a>
        </p>
        <p>
Basically the script now increments the version number of the DLL (if relevant) automatically,
times the time for the build and adds it to a total build time to date (stored in
an external txt file) and finally prints out whether the build was a success or not
-basically some of our projects are taking a while to build and I wanted something
that was "clearer" ;)
</p>
        <p>
I'm thinking about adding Christmas trees next, anyone know how to do them in ASCII?
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=59e396af-2f03-4bce-a4b9-5651a5b7cf6c" />
      </body>
      <title>Custom Visual Studio Build Events</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,59e396af-2f03-4bce-a4b9-5651a5b7cf6c.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/12/15/CustomVisualStudioBuildEvents.aspx</link>
      <pubDate>Mon, 15 Dec 2008 18:21:37 GMT</pubDate>
      <description>&lt;p&gt;
I thought I'd share some festive "fun" today. For quite some time now I've hooked
into the build events within Visual Studio but I think this is just taking it too
far...
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.sitedoc.co.uk/tim/img/New Build Routine.png" rel="[lightbox]"&gt;&lt;img height="72" src="http://farm4.static.flickr.com/3200/3111244018_81f4661a0e_m.jpg" width="240" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Basically the script now increments the version number of the DLL (if relevant) automatically,
times the time for the build and adds it to a total build time to date (stored in
an external txt file) and finally prints out whether the build was a success or not
-basically some of our projects are taking a while to build and I wanted something
that was "clearer" ;)
&lt;/p&gt;
&lt;p&gt;
I'm thinking about adding Christmas trees next, anyone know how to do them in ASCII?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=59e396af-2f03-4bce-a4b9-5651a5b7cf6c" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,59e396af-2f03-4bce-a4b9-5651a5b7cf6c.aspx</comments>
      <category>C#</category>
      <category>Software/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=53ed98cb-aaed-4985-9705-e627a22acfb9</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,53ed98cb-aaed-4985-9705-e627a22acfb9.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,53ed98cb-aaed-4985-9705-e627a22acfb9.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=53ed98cb-aaed-4985-9705-e627a22acfb9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We've just moved a couple of our sites onto a new server and have intermittently started
to receive the error "The remote host closed the connection. The error code is
0x80072746.", usually around the same time as "Timeout expired.  The timeout
period elapsed prior to completion of the operation or the server is not responding.".
</p>
        <p>
As the infrastructure hadn't changed we were able to rule out network issues, hardware
issues (it was an upgrade) and nothing had changed on the code level so we put it
down to the new backup routine.
</p>
        <p>
On a little Googling, I found a few sites that were pointing to (among other things)
the Request length and Executiuon time which got me thinking, in this particular site
there is a lot of data being sent/retrieved and it could be maxing out the request.
After a little more digging I found <a href="http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx">this
article from Microsoft about the httpRuntime Element</a> and I quote
</p>
        <blockquote>
          <p>
This time-out applies only if the debug attribute in the compilation element is False.
To help to prevent shutting down the application while you are debugging, do not set
this time-out to a large value.
</p>
        </blockquote>
        <p>
Although I didn't recall making any changes to the site, when updating the database
configuration settings, I did change the compilation element to false. So far increasing
the executionTimeout value appears to have fixed the issue.
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=53ed98cb-aaed-4985-9705-e627a22acfb9" />
      </body>
      <title>The remote host closed the connection. The error code is 0x80072746</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,53ed98cb-aaed-4985-9705-e627a22acfb9.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/11/05/TheRemoteHostClosedTheConnectionTheErrorCodeIs0x80072746.aspx</link>
      <pubDate>Wed, 05 Nov 2008 14:03:40 GMT</pubDate>
      <description>&lt;p&gt;
We've just moved a couple of our sites onto a new server and have intermittently started
to receive the error &amp;quot;The remote host closed the connection. The error code is
0x80072746.", usually around the same time as "Timeout expired.&amp;#160; The timeout
period elapsed prior to completion of the operation or the server is not responding.".
&lt;/p&gt;
&lt;p&gt;
As the infrastructure hadn't changed we were able to rule out network issues, hardware
issues (it was an upgrade) and nothing had changed on the code level so we put it
down to the new backup routine.
&lt;/p&gt;
&lt;p&gt;
On a little Googling, I found a few sites that were pointing to (among other things)
the Request length and Executiuon time which got me thinking, in this particular site
there is a lot of data being sent/retrieved and it could be maxing out the request.
After a little more digging I found &lt;a href="http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx"&gt;this
article from Microsoft about the httpRuntime Element&lt;/a&gt; and I quote
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This time-out applies only if the debug attribute in the compilation element is False.
To help to prevent shutting down the application while you are debugging, do not set
this time-out to a large value.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Although I didn't recall making any changes to the site, when updating the database
configuration settings, I did change the compilation element to false. So far increasing
the executionTimeout value appears to have fixed the issue.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=53ed98cb-aaed-4985-9705-e627a22acfb9" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,53ed98cb-aaed-4985-9705-e627a22acfb9.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=cccc56c3-df32-4c82-be11-e029106f93f8</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,cccc56c3-df32-4c82-be11-e029106f93f8.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,cccc56c3-df32-4c82-be11-e029106f93f8.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=cccc56c3-df32-4c82-be11-e029106f93f8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We had an interesting problem the other day while integrating with a web service hosted
on an apache server. Every time we called the WSDL methods we could see a valid request
being sent and a valid response being returned (ok there were a few syntax errors
but nothing that would stop it converting) but despite this every time, without fail,
it would return null at code level.
</p>
        <p>
The solution was actually amazingly simple. In short, since our last flurry with web
services we've upgraded to Visual Studio 2008 and installed ReSharper (see below for
how that's relevant). In VS2008 they've sneakily added a new menu "Add Service
Reference" and although it's in the same menu location and a similar wording
etc does something different. If you add your WSDL reference this way it will more
than likely fail.
</p>
        <p>
To add a "Web Reference" in Visual Studio 2008 follow the instructions below and hopefully
you won't go down the same routes that I did trying to debug the XML...
</p>
        <p>
Click the "Add Service Reference" menu option (obviously!) 
</p>
        <p>
          <img height="93" src="http://blogs.sitedoc.co.uk/tim/img/VS2008AddServiceReference.png" width="242" />
        </p>
        <p>
The screen below should appear, instead of entering the address of the web service
into the address bar, click the advanced button at the bottom (highlighted)
</p>
        <p>
          <img height="508" src="http://blogs.sitedoc.co.uk/tim/img/AddServiceReference1.png" width="631" />
        </p>
        <p>
That'll then bring up the screen below, on which you need to click the "Add Web Reference"
button at the bottom.
</p>
        <p>
          <img height="601" src="http://blogs.sitedoc.co.uk/tim/img/AddServiceReference2.png" width="649" />
        </p>
        <p>
You should then be presented with the usual "Add Web Reference" screen (see below).
</p>
        <p>
          <img height="572" src="http://blogs.sitedoc.co.uk/tim/img/VS2008WebServiceReference.png" width="825" />
        </p>
        <p>
Why did I mention ReSharper? Well I've notice that as well as adding to the IDE they've
also updated some of the menu items, most noticeably "Go to Definition"
which is now "go to Declaration" (see below) so I figured this new menu
option was thanks to them.
</p>
        <p>
ReSharper: <img height="73" src="http://blogs.sitedoc.co.uk/tim/img/VS2008GoToDeclaration.png" width="195" /></p>
        <p>
Without ReSharper: <img height="71" alt="VS2008GoToDeclarationWithoutResharper.png" src="http://blogs.sitedoc.co.uk/tim/img/VS2008GoToDeclarationWithoutResharper.png" width="165" /></p>
        <p>
So the next time your WSDL is returning a null object even though a valid response
is being retrieved, check how you added it in Visual Studio,.
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=cccc56c3-df32-4c82-be11-e029106f93f8" />
      </body>
      <title>WSDL returning a valid response but object is null</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,cccc56c3-df32-4c82-be11-e029106f93f8.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/11/01/WSDLReturningAValidResponseButObjectIsNull.aspx</link>
      <pubDate>Sat, 01 Nov 2008 18:28:49 GMT</pubDate>
      <description>&lt;p&gt;
We had an interesting problem the other day while integrating with a web service hosted
on an apache server. Every time we called the WSDL methods we could see a valid request
being sent and a valid response being returned (ok there were a few syntax errors
but nothing that would stop it converting) but despite this every time, without fail,
it would return null at code level.
&lt;/p&gt;
&lt;p&gt;
The solution was actually amazingly simple. In short, since our last flurry with web
services we've upgraded to Visual Studio 2008 and installed ReSharper (see below for
how that's relevant). In VS2008 they've sneakily added a new menu &amp;quot;Add Service
Reference&amp;quot; and although it's in the same menu location and a similar wording
etc does something different. If you add your WSDL reference this way it will more
than likely fail.
&lt;/p&gt;
&lt;p&gt;
To add a "Web Reference" in Visual Studio 2008 follow the instructions below and hopefully
you won't go down the same routes that I did trying to debug the XML...
&lt;/p&gt;
&lt;p&gt;
Click the "Add Service Reference" menu option (obviously!) 
&lt;/p&gt;
&lt;p&gt;
&lt;img height="93" src="http://blogs.sitedoc.co.uk/tim/img/VS2008AddServiceReference.png" width="242" /&gt;
&lt;/p&gt;
&lt;p&gt;
The screen below should appear, instead of entering the address of the web service
into the address bar, click the advanced button at the bottom (highlighted)
&lt;/p&gt;
&lt;p&gt;
&lt;img height="508" src="http://blogs.sitedoc.co.uk/tim/img/AddServiceReference1.png" width="631" /&gt;
&lt;/p&gt;
&lt;p&gt;
That'll then bring up the screen below, on which you need to click the "Add Web Reference"
button at the bottom.
&lt;/p&gt;
&lt;p&gt;
&lt;img height="601" src="http://blogs.sitedoc.co.uk/tim/img/AddServiceReference2.png" width="649" /&gt;
&lt;/p&gt;
&lt;p&gt;
You should then be presented with the usual "Add Web Reference" screen (see below).
&lt;/p&gt;
&lt;p&gt;
&lt;img height="572" src="http://blogs.sitedoc.co.uk/tim/img/VS2008WebServiceReference.png" width="825" /&gt;
&lt;/p&gt;
&lt;p&gt;
Why did I mention ReSharper? Well I've notice that as well as adding to the IDE they've
also updated some of the menu items, most noticeably &amp;quot;Go to Definition&amp;quot;
which is now &amp;quot;go to Declaration&amp;quot; (see below) so I figured this new menu
option was thanks to them.
&lt;/p&gt;
&lt;p&gt;
ReSharper: &lt;img height="73" src="http://blogs.sitedoc.co.uk/tim/img/VS2008GoToDeclaration.png" width="195" /&gt;
&lt;/p&gt;
&lt;p&gt;
Without ReSharper: &lt;img height="71" alt="VS2008GoToDeclarationWithoutResharper.png" src="http://blogs.sitedoc.co.uk/tim/img/VS2008GoToDeclarationWithoutResharper.png" width="165" /&gt;
&lt;/p&gt;
&lt;p&gt;
So the next time your WSDL is returning a null object even though a valid response
is being retrieved, check how you added it in Visual Studio,.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=cccc56c3-df32-4c82-be11-e029106f93f8" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,cccc56c3-df32-4c82-be11-e029106f93f8.aspx</comments>
      <category>ASP.Net</category>
      <category>ASP.Net/Web Service</category>
      <category>ASP.Net/WSDL</category>
      <category>C#</category>
      <category>Software/Visual Studio</category>
      <category>The Site Doctor</category>
      <category>WebDD</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=0e540d45-58b9-4701-a4ca-4917f3bf31fd</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,0e540d45-58b9-4701-a4ca-4917f3bf31fd.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,0e540d45-58b9-4701-a4ca-4917f3bf31fd.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=0e540d45-58b9-4701-a4ca-4917f3bf31fd</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When uploading some new media items for a client today we noticed that if you selected
"Remove" before saving, it doesn't actually remove the file from the FileSystem. Having
a quick look around the forums I saw there are a few posts already pointing this out
so I thought I'd fix it.
</p>
        <p>
This is a little application that simply checks the media items in the database and
then compares it against a folder you select on your machine. If the file is in use
according to the database then it's ignored otherwise it will remove it.
</p>
        <p>
          <img src="http://blogs.sitedoc.co.uk/tim/img/MediaCleaner.png" />
        </p>
        <p>
To use:
</p>
        <ol>
          <li>
Enter your server's login details</li>
          <li>
Click "Test Connection"</li>
          <li>
Select the relevant database from the drop down</li>
          <li>
Check the "Media Folder Name" matches your Umbraco's installation</li>
          <li>
Locate your Media Folder on your computer</li>
          <li>
Click "Check Media Folder" -this will then list all the orphan files</li>
          <li>
If it looks right, click "Delete" -with caution</li>
          <li>
Job done</li>
        </ol>
        <p>
There are a few checks in place to avoid mishap but it's not 100% foolproof as I needed
something rough and ready to sort a couple of installations out. If this is something
that's seen as useful I'll extend it a touch, some ideas I've got already:
</p>
        <ul>
          <li>
Check that the selected media folder matches that of the database</li>
          <li>
Check that the media id's are the same (to avoid wiping another installation)</li>
          <li>
Save config settings for easy re-use</li>
          <li>
Use webservices rather than a direct connection to the database</li>
          <li>
Enable FTP useage</li>
        </ul>
        <p>
          <strong>Please note:</strong> I accept no responsibility if anything was to go horribly
wrong with this. I would backup your folder first just in case!
</p>
        <p>
You can <a title="Clean out your Umbraco media folder" href="http://blogs.sitedoc.co.uk/tim/files/MediaFolderCleaner.zip">download
the MediaFolderCleaner application here</a></p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=0e540d45-58b9-4701-a4ca-4917f3bf31fd" />
      </body>
      <title>Clean out unused media items from Umbraco media folder</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,0e540d45-58b9-4701-a4ca-4917f3bf31fd.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/09/03/CleanOutUnusedMediaItemsFromUmbracoMediaFolder.aspx</link>
      <pubDate>Wed, 03 Sep 2008 16:15:14 GMT</pubDate>
      <description>&lt;p&gt;
When uploading some new media items for a client today we noticed that if you selected
"Remove" before saving, it doesn't actually remove the file from the FileSystem. Having
a quick look around the forums I saw there are a few posts already pointing this out
so I thought I'd fix it.
&lt;/p&gt;
&lt;p&gt;
This is a little application that simply checks the media items in the database and
then compares it against a folder you select on your machine. If the file is in use
according to the database then it's ignored otherwise it will remove it.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blogs.sitedoc.co.uk/tim/img/MediaCleaner.png" /&gt; 
&lt;/p&gt;
&lt;p&gt;
To use:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Enter your server's login details&lt;/li&gt;
&lt;li&gt;
Click "Test Connection"&lt;/li&gt;
&lt;li&gt;
Select the relevant database from the drop down&lt;/li&gt;
&lt;li&gt;
Check the "Media Folder Name" matches your Umbraco's installation&lt;/li&gt;
&lt;li&gt;
Locate your Media Folder on your computer&lt;/li&gt;
&lt;li&gt;
Click "Check Media Folder" -this will then list all the orphan files&lt;/li&gt;
&lt;li&gt;
If it looks right, click "Delete" -with caution&lt;/li&gt;
&lt;li&gt;
Job done&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
There are a few checks in place to avoid mishap but it's not 100% foolproof as I needed
something rough and ready to sort a couple of installations out. If this is something
that's seen as useful I'll extend it a touch, some ideas I've got already:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Check that the selected media folder matches that of the database&lt;/li&gt;
&lt;li&gt;
Check that the media id's are the same (to avoid wiping another installation)&lt;/li&gt;
&lt;li&gt;
Save config settings for easy re-use&lt;/li&gt;
&lt;li&gt;
Use webservices rather than a direct connection to the database&lt;/li&gt;
&lt;li&gt;
Enable FTP useage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Please note:&lt;/strong&gt; I accept no responsibility if anything was to go horribly
wrong with this. I would backup your folder first just in case!
&lt;/p&gt;
&lt;p&gt;
You can &lt;a title="Clean out your Umbraco media folder" href="http://blogs.sitedoc.co.uk/tim/files/MediaFolderCleaner.zip"&gt;download
the MediaFolderCleaner application here&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=0e540d45-58b9-4701-a4ca-4917f3bf31fd" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,0e540d45-58b9-4701-a4ca-4917f3bf31fd.aspx</comments>
      <category>C#</category>
      <category>Development</category>
      <category>The Site Doctor</category>
      <category>Umbraco</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=7d30dc6f-8135-41f6-bb00-5be6f0162d70</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,7d30dc6f-8135-41f6-bb00-5be6f0162d70.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,7d30dc6f-8135-41f6-bb00-5be6f0162d70.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=7d30dc6f-8135-41f6-bb00-5be6f0162d70</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Exactly a year ago today I posted a little <a href="http://blogs.thesitedoctor.co.uk/tim/2007/07/25/Identify+IIS+Sites+And+Log+File+Locations+For+WWW+And+FTP.aspx">application
that output the sites in IIS to a text file</a> and as a few days ago Lars asked for
the source, I thought it would be a nice thing to release it exactly a year later.
</p>
        <p>
I didn't plan it that way, it just happened! Cool :)
</p>
        <div class="code">
          <h2>Identify IIS Sites and Log File locations for WWW and FTP source
</h2>
          <img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" />
          <span style="color: #0000ff">using</span> System; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /><span style="color: #0000ff">using</span> System<span style="color: #ff0000">.</span>DirectoryServices; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /><span style="color: #0000ff">using</span> System<span style="color: #ff0000">.</span>IO; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /><span style="color: #0000ff">using</span> System<span style="color: #ff0000">.</span>Collections; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /><span style="color: #0000ff">namespace</span> IISSites 
<br /><div id="closed633525973907034726_7" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_7', false)" src="http//blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_7" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_7', true)" src="http//blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" align="top" />{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />    <span style="color: #0000ff">class</span> Program 
<br /><div id="closed633525973907034726_9" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_9', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />    <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_9" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_9', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />   
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">static</span> <b><span style="color: #0000ff">string</span></b> fileToWrite <span style="color: #ff0000">=</span> <b><span style="color: #48d1cc">String</span></b><span style="color: #ff0000">.</span>Empty; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />       
[STAThread] 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">static</span> <b><span style="color: #0000ff">void</span></b> Main(<b><span style="color: #0000ff">string</span></b>[]
args) 
<br /><div id="closed633525973907034726_14" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_14', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />        <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_14" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_14', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />       
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
fileToWrite <span style="color: #ff0000">=</span> <b><span style="color: #48d1cc">String</span></b><span style="color: #ff0000">.</span>Format(<span style="color: #800000">"</span><span style="color: #800000">IISExport{0:dd-MM-yyyy}.txt"</span>,
DateTime<span style="color: #ff0000">.</span>Today); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> (args <span style="color: #ff0000">!</span><span style="color: #ff0000">=</span> <span style="color: #0000ff">null</span> &amp;&amp;
args<span style="color: #ff0000">.</span>Length <span style="color: #ff0000">&gt;</span> <b><span style="color: #008080">0</span></b>) 
<br /><div id="closed633525973907034726_17" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_17', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_17" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_17', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
fileToWrite <span style="color: #ff0000">=</span> args[<b><span style="color: #008080">0</span></b>]; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
SortedList www <span style="color: #ff0000">=</span> <span style="color: #0000ff">new</span> SortedList(); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
SortedList ftp <span style="color: #ff0000">=</span> <span style="color: #0000ff">new</span> SortedList(); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">try</span><br /><div id="closed633525973907034726_24" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_24', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_24" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_24', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">const</span> <b><span style="color: #0000ff">string</span></b> FtpServerSchema <span style="color: #ff0000">=</span> <span style="color: #800000">"IIsFtpServer"</span>; <span style="color: #3cb371">//
Case Sensitive</span><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">const</span> <b><span style="color: #0000ff">string</span></b> WebServerSchema <span style="color: #ff0000">=</span> <span style="color: #800000">"IIsWebServer"</span>; <span style="color: #3cb371">//
Case Sensitive</span><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <b><span style="color: #0000ff">string</span></b> ServerName <span style="color: #ff0000">=</span> <span style="color: #800000">"LocalHost"</span>; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
DirectoryEntry W3SVC <span style="color: #ff0000">=</span> <span style="color: #0000ff">new</span> DirectoryEntry(<span style="color: #800000">"IIS://"</span> <span style="color: #ff0000">+</span> ServerName <span style="color: #ff0000">+</span> <span style="color: #800000">"/w3svc"</span>, <span style="color: #800000">"Domain/UserCode"</span>, <span style="color: #800000">"Password"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">foreach</span> (DirectoryEntry
Site <span style="color: #0000ff">in</span> W3SVC<span style="color: #ff0000">.</span>Children) 
<br /><div id="closed633525973907034726_31" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_31', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_31" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_31', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                    <span style="color: #0000ff">if</span> (Site<span style="color: #ff0000">.</span>SchemaClassName <span style="color: #ff0000">=</span><span style="color: #ff0000">=</span> WebServerSchema) 
<br /><div id="closed633525973907034726_33" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_33', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                    <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_33" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_33', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />                   
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                        <b><span style="color: #0000ff">string</span></b> LogFilePath <span style="color: #ff0000">=</span> System<span style="color: #ff0000">.</span>IO<span style="color: #ff0000">.</span>Path<span style="color: #ff0000">.</span>Combine( 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                           
Site<span style="color: #ff0000">.</span>Properties[<span style="color: #800000">"LogFileDirectory</span><span style="color: #800000">"</span>]<span style="color: #ff0000">.</span>Value<span style="color: #ff0000">.</span>ToString(), 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                            <span style="color: #800000">"W3SVC"</span> <span style="color: #ff0000">+</span> Site<span style="color: #ff0000">.</span>Name); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                       
www<span style="color: #ff0000">.</span>Add(Site<span style="color: #ff0000">.</span>Properties[<span style="color: #800000">"ServerComment"</span>]<span style="color: #ff0000">.</span>Value<span style="color: #ff0000">.</span>ToString(),
LogFilePath); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />                   
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
DirectoryEntry MSFTPSVC <span style="color: #ff0000">=</span> <span style="color: #0000ff">new</span> DirectoryEntry(<span style="color: #800000">"IIS://"</span> <span style="color: #ff0000">+</span> ServerName <span style="color: #ff0000">+</span> <span style="color: #800000">"/msftpsvc"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">foreach</span> (DirectoryEntry
Site <span style="color: #0000ff">in</span> MSFTPSVC<span style="color: #ff0000">.</span>Children) 
<br /><div id="closed633525973907034726_43" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_43', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_43" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_43', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                    <span style="color: #0000ff">if</span> (Site<span style="color: #ff0000">.</span>SchemaClassName <span style="color: #ff0000">=</span><span style="color: #ff0000">=</span> FtpServerSchema) 
<br /><div id="closed633525973907034726_45" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_45', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                    <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_45" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_45', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />                   
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                        <b><span style="color: #0000ff">string</span></b> LogFilePath <span style="color: #ff0000">=</span> System<span style="color: #ff0000">.</span>IO<span style="color: #ff0000">.</span>Path<span style="color: #ff0000">.</span>Combine( 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                           
Site<span style="color: #ff0000">.</span>Properties[<span style="color: #800000">"LogFileDirectory</span><span style="color: #800000">"</span>]<span style="color: #ff0000">.</span>Value<span style="color: #ff0000">.</span>ToString(), 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                            <span style="color: #800000">"MSFTPSVC"</span> <span style="color: #ff0000">+</span> Site<span style="color: #ff0000">.</span>Name); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                       
ftp<span style="color: #ff0000">.</span>Add(Site<span style="color: #ff0000">.</span>Properties[<span style="color: #800000">"ServerComment"</span>]<span style="color: #ff0000">.</span>Value<span style="color: #ff0000">.</span>ToString(),
LogFilePath); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />                   
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <b><span style="color: #0000ff">int</span></b> MaxWidth <span style="color: #ff0000">=</span> <b><span style="color: #008080">0</span></b>; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">foreach</span> (<b><span style="color: #0000ff">string</span></b> Site
in www<span style="color: #ff0000">.</span>Keys) 
<br /><div id="closed633525973907034726_54" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_54', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_54" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_54', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                    <span style="color: #0000ff">if</span> (Site<span style="color: #ff0000">.</span>Length <span style="color: #ff0000">&gt;</span> MaxWidth) 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                       
MaxWidth <span style="color: #ff0000">=</span> Site<span style="color: #ff0000">.</span>Length; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">foreach</span> (<b><span style="color: #0000ff">string</span></b> Site
in ftp<span style="color: #ff0000">.</span>Keys) 
<br /><div id="closed633525973907034726_59" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_59', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_59" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_59', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                    <span style="color: #0000ff">if</span> (Site<span style="color: #ff0000">.</span>Length <span style="color: #ff0000">&gt;</span> MaxWidth) 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                       
MaxWidth <span style="color: #ff0000">=</span> Site<span style="color: #ff0000">.</span>Length; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
OutputIt(<span style="color: #800000">"Site</span> <span style="color: #800000">Description"</span><span style="color: #ff0000">.</span>PadRight(MaxWidth) <span style="color: #ff0000">+</span> <span style="color: #800000">" 
Log File Directory"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
OutputIt(<span style="color: #800000">""</span><span style="color: #ff0000">.</span>PadRight(<b><span style="color: #008080">79</span></b>, <span style="color: #800000">'</span><span style="color: #800000">='</span>)); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
OutputIt(<b><span style="color: #48d1cc">String</span></b><span style="color: #ff0000">.Empty);</span><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
OutputIt(<span style="color: #800000">"WWW</span> <span style="color: #800000">Sites"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
OutputIt(<span style="color: #800000">"=========</span><span style="color: #800000">"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">foreach</span> (<b><span style="color: #0000ff">string</span></b> Site
in www<span style="color: #ff0000">.</span>Keys) 
<br /><div id="closed633525973907034726_69" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_69', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_69" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_69', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                    <b><span style="color: #0000ff">string</span></b> output <span style="color: #ff0000">=</span> Site<span style="color: #ff0000">.</span>PadRight(MaxWidth) <span style="color: #ff0000">+</span> <span style="color: #800000">" 
"</span> <span style="color: #ff0000">+</span> www[Site]; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
Console<span style="color: #ff0000">.</span>WriteLine(output); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
OutputIt(output); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #0000ff">if</span> (ftp<span style="color: #ff0000">.</span>Keys<span style="color: #ff0000">.</span>Count <span style="color: #ff0000">&gt;</span> <b><span style="color: #008080">0</span></b>) 
<br /><div id="closed633525973907034726_75" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_75', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_75" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_75', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />               
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
OutputIt(<b><span style="color: #48d1cc">String</span></b><span style="color: #ff0000">.Empty);</span><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
OutputIt(<span style="color: #800000">"FTP</span> <span style="color: #800000">Sites"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                   
OutputIt(<span style="color: #800000">"=========</span><span style="color: #800000">"</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                    <span style="color: #0000ff">foreach</span> (<b><span style="color: #0000ff">string</span></b> Site
in ftp<span style="color: #ff0000">.</span>Keys) 
<br /><div id="closed633525973907034726_80" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_80', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />                    <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_80" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_80', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />                   
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                        <b><span style="color: #0000ff">string</span></b> output <span style="color: #ff0000">=</span> Site<span style="color: #ff0000">.</span>PadRight(MaxWidth) <span style="color: #ff0000">+</span> <span style="color: #800000">" 
"</span> <span style="color: #ff0000">+</span> ftp[Site]; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                       
OutputIt(output); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />                   
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />               
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #3cb371">//
Catch any errors</span><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">catch</span> (Exception
e) 
<br /><div id="closed633525973907034726_88" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_88', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_88" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_88', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
Console<span style="color: #ff0000">.</span>WriteLine(<span style="color: #800000">"Error:</span> <span style="color: #800000">"</span> <span style="color: #ff0000">+</span> e<span style="color: #ff0000">.</span>ToString()); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">finally</span><br /><div id="closed633525973907034726_92" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_92', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_92" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_92', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
Console<span style="color: #ff0000">.</span>WriteLine(); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
Console<span style="color: #ff0000">.</span>WriteLine(<span style="color: #800000">"Press</span> <span style="color: #800000">enter
to close/exit..."</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />                <span style="color: #3cb371">//Console.Read();</span><br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />       
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />        <span style="color: #0000ff">static</span> <b><span style="color: #0000ff">void</span></b> OutputIt(<b><span style="color: #0000ff">string</span></b> lineToAdd) 
<br /><div id="closed633525973907034726_100" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_100', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />        <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_100" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_100', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />       
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />           
Console<span style="color: #ff0000">.</span>WriteLine(lineToAdd); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /><br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">if</span> (<span style="color: #ff0000">!</span><b><span style="color: #48d1cc">String</span></b><span style="color: #ff0000">.</span>IsNullOrEmpty(fileToWrite)) 
<br /><div id="closed633525973907034726_104" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_104', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_104" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_104', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
StreamWriter SW; 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
SW <span style="color: #ff0000">=</span> File<span style="color: #ff0000">.</span>AppendText(fileToWrite); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
SW<span style="color: #ff0000">.</span>WriteLine(lineToAdd); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
SW<span style="color: #ff0000">.</span>Close(); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />            <span style="color: #0000ff">else</span><br /><div id="closed633525973907034726_111" style="display: none"><img onclick="showHideCodeDiv('633525973907034726_111', false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" />            <b><span style="color: #00008b">{...}</span></b></div><div id="open633525973907034726_111" style="display: block"><img onclick="showHideCodeDiv('633525973907034726_111', true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" />           
{ 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" />               
Console<span style="color: #ff0000">.</span>WriteLine(<span style="color: #800000">"locationToOutput</span> <span style="color: #800000">is
Null or String.Empty please supply a value and try again."</span>); 
<br /><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />           
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />       
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />   
}
</div><img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" />}
</div></div>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=7d30dc6f-8135-41f6-bb00-5be6f0162d70" />
      </body>
      <title>Identify IIS Sites and Log File locations for WWW and FTP &amp;ndash;the source</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,7d30dc6f-8135-41f6-bb00-5be6f0162d70.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/07/25/IdentifyIISSitesAndLogFileLocationsForWWWAndFTPNdashtheSource.aspx</link>
      <pubDate>Fri, 25 Jul 2008 14:52:37 GMT</pubDate>
      <description>&lt;p&gt;
Exactly a year ago today I posted a little &lt;a href="http://blogs.thesitedoctor.co.uk/tim/2007/07/25/Identify+IIS+Sites+And+Log+File+Locations+For+WWW+And+FTP.aspx"&gt;application
that output the sites in IIS to a text file&lt;/a&gt; and as a few days ago Lars asked for
the source, I thought it would be a nice thing to release it exactly a year later.
&lt;/p&gt;
&lt;p&gt;
I didn't plan it that way, it just happened! Cool :)
&lt;/p&gt;
&lt;div class="code"&gt;
&lt;h2&gt;Identify IIS Sites and Log File locations for WWW and FTP source
&lt;/h2&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;DirectoryServices; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;IO; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Collections; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; IISSites 
&lt;br /&gt;
&lt;div id="closed633525973907034726_7" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_7&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/PlusNoLines.gif" align="top" /&gt;&lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_7" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_7&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minusNoTopLine.gif" align="top" /&gt;{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program 
&lt;br /&gt;
&lt;div id="closed633525973907034726_9" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_9&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_9" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_9&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; fileToWrite &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #48d1cc"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Empty; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
[STAThread] 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;/b&gt; Main(&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt;[]
args) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_14" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_14&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_14" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_14&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
fileToWrite &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #48d1cc"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Format(&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;IISExport{0:dd-MM-yyyy}.txt&amp;quot;&lt;/span&gt;,
DateTime&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Today); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (args &lt;span style="color: #ff0000"&gt;!&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;
args&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Length &lt;span style="color: #ff0000"&gt;&amp;gt;&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #008080"&gt;0&lt;/span&gt;&lt;/b&gt;) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_17" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_17&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_17" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_17&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
fileToWrite &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; args[&lt;b&gt;&lt;span style="color: #008080"&gt;0&lt;/span&gt;&lt;/b&gt;]; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
SortedList www &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SortedList(); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
SortedList ftp &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SortedList(); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633525973907034726_24" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_24&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_24" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_24&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; FtpServerSchema &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;IIsFtpServer&amp;quot;&lt;/span&gt;; &lt;span style="color: #3cb371"&gt;//
Case Sensitive&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; WebServerSchema &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;IIsWebServer&amp;quot;&lt;/span&gt;; &lt;span style="color: #3cb371"&gt;//
Case Sensitive&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; ServerName &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;LocalHost&amp;quot;&lt;/span&gt;; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
DirectoryEntry W3SVC &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style="color: #800000"&gt;&amp;quot;IIS://&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; ServerName &lt;span style="color: #ff0000"&gt;+&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;/w3svc&amp;quot;&lt;/span&gt;, &lt;span style="color: #800000"&gt;&amp;quot;Domain/UserCode&amp;quot;&lt;/span&gt;, &lt;span style="color: #800000"&gt;&amp;quot;Password&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DirectoryEntry
Site &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; W3SVC&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Children) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_31" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_31&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_31" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_31&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;SchemaClassName &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt; WebServerSchema) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_33" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_33&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_33" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_33&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; LogFilePath &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; System&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;IO&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Path&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Combine( 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Properties[&lt;span style="color: #800000"&gt;&amp;quot;LogFileDirectory&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;]&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Value&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;ToString(), 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800000"&gt;&amp;quot;W3SVC&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Name); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
www&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Add(Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Properties[&lt;span style="color: #800000"&gt;&amp;quot;ServerComment&amp;quot;&lt;/span&gt;]&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Value&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;ToString(),
LogFilePath); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
DirectoryEntry MSFTPSVC &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style="color: #800000"&gt;&amp;quot;IIS://&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; ServerName &lt;span style="color: #ff0000"&gt;+&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;/msftpsvc&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DirectoryEntry
Site &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; MSFTPSVC&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Children) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_43" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_43&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_43" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_43&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;SchemaClassName &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt; FtpServerSchema) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_45" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_45&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_45" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_45&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; LogFilePath &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; System&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;IO&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Path&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Combine( 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Properties[&lt;span style="color: #800000"&gt;&amp;quot;LogFileDirectory&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;]&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Value&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;ToString(), 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800000"&gt;&amp;quot;MSFTPSVC&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Name); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
ftp&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Add(Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Properties[&lt;span style="color: #800000"&gt;&amp;quot;ServerComment&amp;quot;&lt;/span&gt;]&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Value&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;ToString(),
LogFilePath); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;/b&gt; MaxWidth &lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #008080"&gt;0&lt;/span&gt;&lt;/b&gt;; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; Site
in www&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Keys) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_54" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_54&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_54" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_54&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Length &lt;span style="color: #ff0000"&gt;&amp;gt;&lt;/span&gt; MaxWidth) 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
MaxWidth &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Length; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; Site
in ftp&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Keys) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_59" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_59&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_59" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_59&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Length &lt;span style="color: #ff0000"&gt;&amp;gt;&lt;/span&gt; MaxWidth) 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
MaxWidth &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Length; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;span style="color: #800000"&gt;&amp;quot;Site&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;Description&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;PadRight(MaxWidth) &lt;span style="color: #ff0000"&gt;+&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;&amp;#160;
Log File Directory&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;span style="color: #800000"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;PadRight(&lt;b&gt;&lt;span style="color: #008080"&gt;79&lt;/span&gt;&lt;/b&gt;, &lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;='&lt;/span&gt;)); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;b&gt;&lt;span style="color: #48d1cc"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #ff0000"&gt;.Empty);&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;span style="color: #800000"&gt;&amp;quot;WWW&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;Sites&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;span style="color: #800000"&gt;&amp;quot;=========&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; Site
in www&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Keys) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_69" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_69&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_69" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_69&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; output &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;PadRight(MaxWidth) &lt;span style="color: #ff0000"&gt;+&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;&amp;#160;
&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; www[Site]; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Console&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(output); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(output); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (ftp&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Keys&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Count &lt;span style="color: #ff0000"&gt;&amp;gt;&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #008080"&gt;0&lt;/span&gt;&lt;/b&gt;) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_75" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_75&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_75" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_75&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;b&gt;&lt;span style="color: #48d1cc"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #ff0000"&gt;.Empty);&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;span style="color: #800000"&gt;&amp;quot;FTP&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;Sites&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(&lt;span style="color: #800000"&gt;&amp;quot;=========&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; Site
in ftp&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Keys) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_80" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_80&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_80" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_80&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; output &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; Site&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;PadRight(MaxWidth) &lt;span style="color: #ff0000"&gt;+&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;&amp;#160;
&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; ftp[Site]; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
OutputIt(output); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #3cb371"&gt;//
Catch any errors&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception
e) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_88" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_88&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_88" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_88&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Console&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(&lt;span style="color: #800000"&gt;&amp;quot;Error:&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: #ff0000"&gt;+&lt;/span&gt; e&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;ToString()); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633525973907034726_92" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_92&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_92" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_92&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Console&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Console&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(&lt;span style="color: #800000"&gt;&amp;quot;Press&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;enter
to close/exit...&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #3cb371"&gt;//Console.Read();&lt;/span&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&amp;#160;&lt;b&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;/b&gt; OutputIt(&lt;b&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;/b&gt; lineToAdd) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_100" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_100&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_100" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_100&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Console&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(lineToAdd); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #ff0000"&gt;!&lt;/span&gt;&lt;b&gt;&lt;span style="color: #48d1cc"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;IsNullOrEmpty(fileToWrite)) 
&lt;br /&gt;
&lt;div id="closed633525973907034726_104" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_104&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_104" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_104&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
StreamWriter SW; 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
SW &lt;span style="color: #ff0000"&gt;=&lt;/span&gt; File&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;AppendText(fileToWrite); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
SW&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(lineToAdd); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
SW&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;Close(); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
&lt;div id="closed633525973907034726_111" style="display: none"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_111&amp;#39;, false)" src="http//blogs.sitedoc.co.uk/img/sc/plus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;b&gt;&lt;span style="color: #00008b"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633525973907034726_111" style="display: block"&gt;&lt;img onclick="showHideCodeDiv(&amp;#39;633525973907034726_111&amp;#39;, true)" src="http//blogs.sitedoc.co.uk/img/sc/minus.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
{ 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/I.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
Console&lt;span style="color: #ff0000"&gt;.&lt;/span&gt;WriteLine(&lt;span style="color: #800000"&gt;&amp;quot;locationToOutput&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;is
Null or String.Empty please supply a value and try again.&amp;quot;&lt;/span&gt;); 
&lt;br /&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;&amp;#160;&amp;#160;&amp;#160;
}
&lt;/div&gt;
&lt;img src="http//blogs.sitedoc.co.uk/img/sc/L.gif" align="top" /&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=7d30dc6f-8135-41f6-bb00-5be6f0162d70" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,7d30dc6f-8135-41f6-bb00-5be6f0162d70.aspx</comments>
      <category>C#</category>
      <category>IIS</category>
      <category>Server Management</category>
      <category>The Site Doctor</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=b647c71d-3584-4c43-92a7-8603a27e2e75</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,b647c71d-3584-4c43-92a7-8603a27e2e75.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,b647c71d-3584-4c43-92a7-8603a27e2e75.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=b647c71d-3584-4c43-92a7-8603a27e2e75</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As it's my Birthday today I thought I'd post a silly ditty. I'm currently altering
Protx's old ASP.Net library to accommodate their changes in regards 3D Secure and
while reflecting some of the code came across an enum with their number representations
as Hexadecimal strings. I needed to convert these to decimals so thought I'd share
a quick and easy way to do it.
</p>
        <p>
Open up Window's Calculator (Windows Key + R then type in <em>calc</em>) under the
View menu select "Scientific". Press the F5 key to switch over to Hex entry. Type
in the value after the 0x and hit F6
</p>
        <p>
Simple, easy and will help you convert all those Hexadecimal strings (ones that look
like this: 0x01 or 0x1a).
</p>
        <p>
Right, time for a coffee :)
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=b647c71d-3584-4c43-92a7-8603a27e2e75" />
      </body>
      <title>How to: Convert Hexadecimal Strings</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,b647c71d-3584-4c43-92a7-8603a27e2e75.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/07/15/HowToConvertHexadecimalStrings.aspx</link>
      <pubDate>Tue, 15 Jul 2008 09:25:56 GMT</pubDate>
      <description>&lt;p&gt;
As it's my Birthday today I thought I'd post a silly ditty. I'm currently altering
Protx's old ASP.Net library to accommodate their changes in regards 3D Secure and
while reflecting some of the code came across an enum with their number representations
as Hexadecimal strings. I needed to convert these to decimals so thought I'd share
a quick and easy way to do it.
&lt;/p&gt;
&lt;p&gt;
Open up Window's Calculator (Windows Key + R then type in &lt;em&gt;calc&lt;/em&gt;) under the
View menu select "Scientific". Press the F5 key to switch over to Hex entry. Type
in the value after the 0x and hit F6
&lt;/p&gt;
&lt;p&gt;
Simple, easy and will help you convert all those Hexadecimal strings (ones that look
like this: 0x01 or 0x1a).
&lt;/p&gt;
&lt;p&gt;
Right, time for a coffee :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=b647c71d-3584-4c43-92a7-8603a27e2e75" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,b647c71d-3584-4c43-92a7-8603a27e2e75.aspx</comments>
      <category>C#</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=3be8e35e-e965-4e0f-8f24-842cf5f69c16</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,3be8e35e-e965-4e0f-8f24-842cf5f69c16.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,3be8e35e-e965-4e0f-8f24-842cf5f69c16.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=3be8e35e-e965-4e0f-8f24-842cf5f69c16</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We've been setting up the page's title using ASP.Net for quite some time now, we tend
to word it: Product Name | Category | Site Name as this 
<abbr title="In My Opinion">
IMO
</abbr>
is the most comprehensive naming convention (though the pipe (|) gets converted to
a space for the bookmarks).
</p>
        <p>
When editing one of our sites today though I noticed that the title was resorting
to <a title="Hair salon in Warndon, Worcester and Brierley Hill" href="http://www.avantgardesalons.com/">Avant
Garde hair salons</a> -which was setup as the brand's name. Looking into it I found
that if you set the &lt;title&gt; tag within the page or master page, ASP.Net doesn't
override it from the codebehind so watch out!
</p>
        <p>
For those of you who don't know how to set the title of your page from codebehind
it's simple:
</p>
        <div class="code">
          <img src="/img/sc/clear.gif" align="top" />
          <span style="color: #0000ff">this</span>.Page.Title
= <span style="color: #800000">"Put your title</span> <span style="color: #800000">here"</span>; 
<br /></div>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=3be8e35e-e965-4e0f-8f24-842cf5f69c16" />
      </body>
      <title>Setting the page title with ASP.Net</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,3be8e35e-e965-4e0f-8f24-842cf5f69c16.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/07/10/SettingThePageTitleWithASPNet.aspx</link>
      <pubDate>Thu, 10 Jul 2008 10:57:57 GMT</pubDate>
      <description>&lt;p&gt;
We've been setting up the page's title using ASP.Net for quite some time now, we tend
to word it: Product Name | Category | Site Name as this 
&lt;abbr title="In My Opinion"&gt;
IMO
&lt;/abbr&gt;
is the most comprehensive naming convention (though the pipe (|) gets converted to
a space for the bookmarks).
&lt;/p&gt;
&lt;p&gt;
When editing one of our sites today though I noticed that the title was resorting
to &lt;a title="Hair salon in Warndon, Worcester and Brierley Hill" href="http://www.avantgardesalons.com/"&gt;Avant
Garde hair salons&lt;/a&gt; -which was setup as the brand's name. Looking into it I found
that if you set the &amp;lt;title&amp;gt; tag within the page or master page, ASP.Net doesn't
override it from the codebehind so watch out!
&lt;/p&gt;
&lt;p&gt;
For those of you who don't know how to set the title of your page from codebehind
it's simple:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img src="/img/sc/clear.gif" align="top" /&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page.Title
= &lt;span style="color: #800000"&gt;&amp;quot;Put your title&lt;/span&gt;&amp;#160;&lt;span style="color: #800000"&gt;here&amp;quot;&lt;/span&gt;; 
&lt;br /&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=3be8e35e-e965-4e0f-8f24-842cf5f69c16" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,3be8e35e-e965-4e0f-8f24-842cf5f69c16.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=4b25e0a2-9f4e-4abf-abd2-621a7a1d848f</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,4b25e0a2-9f4e-4abf-abd2-621a7a1d848f.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,4b25e0a2-9f4e-4abf-abd2-621a7a1d848f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=4b25e0a2-9f4e-4abf-abd2-621a7a1d848f</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.27seconds.com/">Doug Setzer</a> posted this comment in response
to my recent "<a href="http://blogs.thesitedoctor.co.uk/tim/2008/05/28/A+Seriously+Elegant+SQL+Injection.aspx">A
seriously elegant SQL Injection</a>" post and I thought it may be of interest to others
so have promoted it to a post...
</p>
        <hr />
        <p>
Well, I'll step up and say that I am the "mate" who had this done.  Tim's right
- *always* sanitize your inputs.  In my defence, this was a site that I inherited
from a previous contractor.  I'm not entirely absent of blame, I still should
have done a security sweep through the code.
</p>
        <p>
I'd like to document the steps that I went through once this was identified to try
and avoid this kind of thing in the future.
</p>
        <ol>
          <li>
Edit every web page that executes a query to sanitize any parameters that are passed
in.  Since the site was classic ASP, I used my "SQLStringFieldValue" function:<br /><a href="http://www.27seconds.com/kb/article_view.aspx?id=50">www.27seconds.com/kb/article_view.aspx?id=50</a></li>
          <li>
Modify the DB user account that is used to have *read only* access to the database 
</li>
          <li>
Modify the pages that DO write to the database to have *read/write* access to the
specific tables that are being changed.  This limits the number of places that
SQL Injection can occur to a smaller set than was previously possible.  I still
sanitize all of my input, but I'm extra spastic in these database calls. 
</li>
          <li>
Add database auditing (triggers writing to mirror tables with audit event indicator
&amp; date/time) to see when data changes occur.  This is still problematic with
the pages that have "write" permissions to the tables, but again- that footprint is
much smaller.</li>
        </ol>
        <ol>
My future plans are to move to a view/stored procedure based architecture.  I
can then limit write permissions to just the stored procedures and read permissions
to just the views.  My grand gusto plans are to move to using command objects
&amp; parameters, but I'd sooner re-write the entire site.
</ol>
        <hr />
        <p>
Although Doug's attack wasn't the same nihaorr1.com attack that's going around atm
it was similar so I would imagine other's will find this useful.
</p>
        <p>
It still amazes me how many developers still fail to sanitise strings, only last week
I came across another site (in PHP) that was allowing simple SQL injections to be
used to log into their administration system. It was down to a problem with the sanitization
string, but why not at least check your site before it goes live? It takes 2 minutes
and even less to fix...
</p>
        <p>
For those of you who need a few pointers, there's a good discussion or two about <a href="http://www.aspmessageboard.com/forum/asp.asp?M=896001&amp;T=896001&amp;F=20&amp;P=1#896004">sanitising
strings on the 4 Guys From Rolla site</a>.
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=4b25e0a2-9f4e-4abf-abd2-621a7a1d848f" />
      </body>
      <title>A seriously elegant SQL Injection -how it was sorted</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,4b25e0a2-9f4e-4abf-abd2-621a7a1d848f.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2008/05/29/ASeriouslyElegantSQLInjectionHowItWasSorted.aspx</link>
      <pubDate>Thu, 29 May 2008 14:32:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.27seconds.com/"&gt;Doug Setzer&lt;/a&gt; posted this comment in response
to my recent "&lt;a href="http://blogs.thesitedoctor.co.uk/tim/2008/05/28/A+Seriously+Elegant+SQL+Injection.aspx"&gt;A
seriously elegant SQL Injection&lt;/a&gt;" post and I thought it may be of interest to others
so have promoted it to a post...
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
Well, I'll step up and say that I am the "mate" who had this done.&amp;nbsp; Tim's right
- *always* sanitize your inputs.&amp;nbsp; In my defence, this was a site that I inherited
from a previous contractor.&amp;nbsp; I'm not entirely absent of blame, I still should
have done a security sweep through the code.
&lt;/p&gt;
&lt;p&gt;
I'd like to document the steps that I went through once this was identified to try
and avoid this kind of thing in the future.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Edit every web page that executes a query to sanitize any parameters that are passed
in.&amp;nbsp; Since the site was classic ASP, I used my "SQLStringFieldValue" function:&lt;br&gt;
&lt;a href="http://www.27seconds.com/kb/article_view.aspx?id=50"&gt;www.27seconds.com/kb/article_view.aspx?id=50&lt;/a&gt; 
&lt;li&gt;
Modify the DB user account that is used to have *read only* access to the database 
&lt;li&gt;
Modify the pages that DO write to the database to have *read/write* access to the
specific tables that are being changed.&amp;nbsp; This limits the number of places that
SQL Injection can occur to a smaller set than was previously possible.&amp;nbsp; I still
sanitize all of my input, but I'm extra spastic in these database calls. 
&lt;li&gt;
Add database auditing (triggers writing to mirror tables with audit event indicator
&amp;amp; date/time) to see when data changes occur.&amp;nbsp; This is still problematic with
the pages that have "write" permissions to the tables, but again- that footprint is
much smaller.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
My future plans are to move to a view/stored procedure based architecture.&amp;nbsp; I
can then limit write permissions to just the stored procedures and read permissions
to just the views.&amp;nbsp; My grand gusto plans are to move to using command objects
&amp;amp; parameters, but I'd sooner re-write the entire site.
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;
Although Doug's attack wasn't the same nihaorr1.com attack that's going around atm
it was similar so I would imagine other's will find this useful.
&lt;/p&gt;
&lt;p&gt;
It still amazes me how many developers still fail to sanitise strings, only last week
I came across another site (in PHP) that was allowing simple SQL injections to be
used to log into their administration system. It was down to a problem with the sanitization
string, but why not at least check your site before it goes live? It takes 2 minutes
and even less to fix...
&lt;/p&gt;
&lt;p&gt;
For those of you who need a few pointers, there's a good discussion or two about &lt;a href="http://www.aspmessageboard.com/forum/asp.asp?M=896001&amp;amp;T=896001&amp;amp;F=20&amp;amp;P=1#896004"&gt;sanitising
strings on the 4 Guys From Rolla site&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=4b25e0a2-9f4e-4abf-abd2-621a7a1d848f" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,4b25e0a2-9f4e-4abf-abd2-621a7a1d848f.aspx</comments>
      <category>ASP</category>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Development</category>
      <category>IIS</category>
      <category>Security</category>
      <category>SQL Server</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=7fb31166-4f44-469c-9631-f3474d86939c</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,7fb31166-4f44-469c-9631-f3474d86939c.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,7fb31166-4f44-469c-9631-f3474d86939c.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=7fb31166-4f44-469c-9631-f3474d86939c</wfw:commentRss>
      <title>What have I been up to?</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,7fb31166-4f44-469c-9631-f3474d86939c.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2007/09/21/WhatHaveIBeenUpTo.aspx</link>
      <pubDate>Fri, 21 Sep 2007 22:20:01 GMT</pubDate>
      <description>&lt;p&gt;
It's been rather quiet&amp;nbsp;on my blog&amp;nbsp;recently, if you're wondering why (and
don't chat to me on/off-line) I thought I would share with you what we've been working
on recently. 
&lt;/p&gt;
&lt;p&gt;
For the past month or so &lt;a title="West Midlands web development and design" href="http://www.thesitedoctor.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;The
Site Doctor&lt;/a&gt; has been developing a new web site (&lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk"&gt;www.wineandhampergifts.co.uk&lt;/a&gt;)&amp;nbsp;for &lt;a title="Producers of personalised corporate hampers and gifts" href="http://www.porterandwoodman.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Porter
and Woodman Gifts 
&lt;abbr title="Limited"&gt;
Ltd
&lt;/abbr&gt;
&lt;/a&gt; - a local company that produces &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;personalised
corporate hampers and gifts&lt;/a&gt;. It's been quite a challenge as they have a rather
unusual ordering system that allows multiple recipients/addresses multiple items.
Looking at it now, it's not so complicated but the delivery charge calculations and
initial specs took a while to fully grasp. It's been really enjoyable.
&lt;/p&gt;
&lt;p&gt;
I'll probably cover aspects of the site over the forthcoming months but there are
a few really nice features to the &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Wine
and Hamper Gifts site&lt;/a&gt; (or at least I think so), some of which the end user will
never know about such as the use of generics to calculate the address/recipient/gift
variations) and those that they may -for instance the use of the JavaScript&lt;sup&gt;1&lt;/sup&gt; Zoom
function on the product details page (courtesy of &lt;a title="LuckyZoom -impressive JavaScript zooming" href="http://luckyteam.co.uk/products/LuckyZoom/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;LuckyZoom&lt;/a&gt;),
also the design created by our excellent designer Gareth Brown all adds up to what
has to be one of the best sites I've developed to date.
&lt;/p&gt;
&lt;p&gt;
&lt;sup&gt;1&lt;/sup&gt; Yes, I did just say I've integrated some JavaScript into the site ;)
&lt;/p&gt;
&lt;p&gt;
I doubt most of my readers are interested on the in's and out's of the project itself
but from an 
&lt;abbr title="Search Engine Optimisation"&gt;
SEO
&lt;/abbr&gt;
perspective, I for one am expecting pretty decent results. We opted to use the &lt;a title="URL Rewriting IIS ISAPI from Helicon" href="http://www.isapirewrite.com/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;URL
Rewriting ISAPI from Helicon&lt;/a&gt; this time round over our usual IISMods 
&lt;abbr title="Uniform Resource Locator"&gt;
URL
&lt;/abbr&gt;
Rewriting ISAPI as for some reason the IISMods site has been offline for a while (and
checking now has been converted into a very weird site).
&lt;/p&gt;
&lt;p&gt;
Another aspect that some people may be unaware of is that the majority of the &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Wine
and Hamper Gifts site&lt;/a&gt; operates the same without JavaScript as it does with JavaScript,
this is important not only for screen readers but also search engines. There is only
one area of the &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Wine
and Hamper Gifts site&lt;/a&gt; that I'm aware of that doesn't operate without JavaScript
and that is the "Personalise this gift" link on the &lt;a title="Wine and Hamper gifts cart page" href="http://www.wineandhampergifts.co.uk/order/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;cart
page&lt;/a&gt; that allows the user to either edit the existing message or add one that
doesn't already exist, that's because it uses a LinkButton, but I may find a way around
that later.
&lt;/p&gt;
&lt;p&gt;
Other features that I really like are little things like the way the drop down lists
on the left hand menu are created -they're not actually drop down lists but unordered
lists that are then manipulated using JavaScript, I think the JavaScript could do
with a little tweaking but the result is superb. The &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Wine
and Hamper Gifts site&lt;/a&gt; also creates a 
&lt;abbr title="Portable Document Format"&gt;
PDF
&lt;/abbr&gt;
receipt for the user which is emailed to them, this is something I've been meaning
to look into for some time but haven't had the chance, luckily while I was developing
the site, &lt;a title="Active Pixels Ltd -a web development business based in Chelmsford, Essex" href="http://www.activepixels.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Sean
Ronan&lt;/a&gt; posted to the &lt;a title="UK ASP/ASP.Net discussion list" href="http://www.mswebdev.org.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;MsWebDev
list&lt;/a&gt; about an &lt;a title="Create PDF files on the fly using ASP.Net" href="http://sourceforge.net/projects/itextsharp/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;ASP.Net
PDF library iTextSharp&lt;/a&gt; (a port from a Java library) which, despite a few oddities
from the 
&lt;abbr title="Point Of View"&gt;
POV
&lt;/abbr&gt;
of the Java port does exactly what I wanted. The library is pretty easy to use once
you get your head around it and certainly &lt;a href="http://blogs.thesitedoctor.co.uk/tim/files/Example-wine-and-hamper-gifts-order.pdf"&gt;produces
some nice results&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
There's still more work that's needed to finalise the content and various aspects
of the &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Wine
and Hamper Gifts website&lt;/a&gt; but if you have a chance, check out the new &lt;a title="Producers of personalised corporate hampers and gifts" href="http://www.porterandwoodman.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Porter
and Woodman Gifts 
&lt;abbr title="Limited"&gt;
Ltd
&lt;/abbr&gt;
&lt;/a&gt; &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;Wine
and Hamper Gifts website&lt;/a&gt; and leave a comment here letting me know what you think
:D
&lt;/p&gt;
&lt;p&gt;
Oh, and they've given us a pretty high target to get before Christmas so if you're
thinking about treating your customers to a&amp;nbsp;&lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk/?utm_source=The%2BSite%2BDoctor&amp;amp;utm_medium=blog&amp;amp;utm_content=post"&gt;personalised
corporate hamper&amp;nbsp;or gift&lt;/a&gt;&amp;nbsp;give a little thought to using &lt;a title="Porter and Woodman&amp;rsquo;s Corporate gifts including an exquisite selection of wine and hamper gifts. The wooden cases used for the hamper gifts are all manufactured in our own Wood Shop, with printing and personalisation carried out in-house" href="http://www.wineandhampergifts.co.uk"&gt;www.wineandhampergifts.co.uk&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=7fb31166-4f44-469c-9631-f3474d86939c" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,7fb31166-4f44-469c-9631-f3474d86939c.aspx</comments>
      <category>AJAX</category>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>CSS</category>
      <category>Design</category>
      <category>SEO</category>
      <category>The Site Doctor</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36</wfw:commentRss>
      <slash:comments>10</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="error">
          <h2>Server Error in '/' Application. 
</h2>
          <hr align="center" width="100%" color="silver" noshade="noshade" size="1" />
          <p>
            <em>The Controls collection cannot be modified because the control contains code blocks
(i.e. &lt;% ... %&gt;).</em>
            <br />
            <strong>Description: </strong>An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more information about
the error and where it originated in the code. 
<br /><br /><strong>Exception Details: </strong>System.Web.HttpException: The Controls collection
cannot be modified because the control contains code blocks (i.e. &lt;% ... %&gt;).<br /><br /><strong>Source Error:</strong></p>
          <table cellpadding="0" width="100%" border="0" unselectable="on">
            <tbody>
              <tr>
                <td>
                  <p>
 
</p>
                  <p>
Line 132:                       
metaKey.Name = "keywords";<br />
Line 133:                       
metaKey.Content = p.MetaKeywords;<br />
Line 134:                       
this.Page.Header.Controls.Add(metaKey);<br />
Line 135:                   
}<br />
Line 136:                   
if (!String.IsNullOrEmpty(p.MetaDescription))
</p>
                </td>
              </tr>
            </tbody>
          </table>
          <p>
            <br />
            <strong>Source File: </strong>a:\xyz\ContentHandler.aspx.cs<strong>    Line: </strong>134 
<br /><br /><strong>Stack Trace:</strong></p>
          <table cellpadding="0" width="100%" border="0" unselectable="on">
            <tbody>
              <tr>
                <td>
                  <p>
 
</p>
                  <p>
[HttpException (0x80004005): The Controls collection cannot be modified because the
control contains code blocks (i.e. &lt;% ... %&gt;).]<br />
   System.Web.UI.ControlCollection.Add(Control child) +2105903<br />
   ContentHandler.Page_Load(Object sender, EventArgs e) in a:\xyz\ContentHandler.aspx.cs:134<br />
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object
o, Object t, EventArgs e) +15<br />
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
EventArgs e) +34<br />
   System.Web.UI.Control.OnLoad(EventArgs e) +99<br />
   System.Web.UI.Control.LoadRecursive() +47<br />
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,
Boolean includeStagesAfterAsyncPoint) +1061
</p>
                </td>
              </tr>
            </tbody>
          </table>
          <div align="center">
            <hr align="center" width="100%" color="silver" noshade="noshade" size="1" />
          </div>
          <p>
            <strong>Version Information:</strong> Microsoft .NET Framework Version:2.0.50727.832;
ASP.NET Version:2.0.50727.832 
</p>
        </div>
        <p>
Another day, another issue ;)
</p>
        <p>
This had me going around in circles for a while until I realised what it was, if you're
getting this error you can bet your bottom dollar that you have &lt;%= %&gt; somewhere
in your page's header -furthermore I'd hazard a guess that you've got it in some JavaScript
to reference an ASP.Net control on the page- and then you're trying to add a control
to the header programmatically (or a custom control from someone like <a href="http://www.telerik.com/">Telerik</a> is
trying to). Am I right<sup>1</sup>?
</p>
        <p>
          <sup>1</sup> I'm not allowed to ask you to so I won't, but if I was right, then spend
that bottom dollar clicking on one of the Google Ads :P
</p>
        <p>
I can't tell you exactly why this occurs but my understanding of it is that ASP.Net
can't re-create the header if it has Response.Write somewhere in the header (&lt;%=)
-most likely due to when the header is created it's not available (will look into
it). No doubt you want to know the fix?
</p>
        <p>
          <strong>The Fix </strong>
          <br />
The fix is simple, remove the inline code blocks and JavaScript and move it to your
code behind i.e.:
</p>
        <div class="code">
          <div id="closed633235486918437500_1" style="display: none">
            <img onclick="showHideCodeDiv('633235486918437500_1', false)" src="/img/sc/PlusNoLines.gif" align="top" />
            <span style="color: #0000ff">string</span> _manageSearch = <span style="color: #008b8b">String</span>.Format(<b><span style="color: #00008b">@'...'</span></b><span style="color: #800000">"</span><span style="color: #800000">lblFindAGift</span><span style="color: #800000">"</span><span style="color: #800000">"</span><span style="color: #800000">);</span></div>
          <div id="open633235486918437500_1" style="display: block">
            <img src="/img/sc/clear.gif" align="top" />
            <span style="color: #0000ff">string</span> _manageSearch = <span style="color: #008b8b">String</span>.Format( <span style="color: #800000">@" <br /><img src="/img/sc/clear.gif" align="top" />        function ManageSearch(){{<br /><img src="/img/sc/clear.gif" align="top" />                var lbl = document.getElementById(""lblFindAGift"");<br /><img src="/img/sc/clear.gif" align="top" />                var txt = document.getElementById(""{0}"");<br /><img src="/img/sc/clear.gif" align="top" />                var btn = document.getElementById(""{1}"");<br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" />                .Do Something with it..<br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" />        }}",</span><br /><img src="/img/sc/clear.gif" align="top" />        txtSearch.ClientID);<br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: #0000ff">this</span>.Page.ClientScript.RegisterClientScriptBlock(<span style="color: #0000ff">this</span>.GetType(), <span style="color: #800000">"</span><span style="color: #800000">ManageSearch</span><span style="color: #800000">"</span>, _manageSearch, <span style="color: #0000ff">true</span>);<br /></div>
          <p>
            <strong>Remember:</strong> You need to escape the curly brackets otherwise you will
get a "<a title="Why the heck am I getting String.Format- Exception  of type System.Web.HttpUnhandledException was thrown?" href="http://blogs.thesitedoctor.co.uk/tim/2007/08/22/StringFormat+Exception+Of+Type+SystemWebHttpUnhandledException+Was+Thrown.aspx">String.Format-
Exception of type System.Web.HttpUnhandledException was thrown</a>"
</p>
        </div>
        <p>
          <strong>Update:</strong> Thanks to Julian Voelcker for sending me <a href="http://west-wind.com/weblog/posts/5758.aspx">this
alternative "fix" for the problem</a>, can't say I like it though ;) basically instead
of using &lt;%= ... %&gt; you would write the databinding expression of: &lt;%<strong>#</strong> ...
%&gt;
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36" />
      </body>
      <title>The Controls collection cannot be modified because the control contains code blocks</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2007/08/24/TheControlsCollectionCannotBeModifiedBecauseTheControlContainsCodeBlocks.aspx</link>
      <pubDate>Fri, 24 Aug 2007 09:49:56 GMT</pubDate>
      <description>&lt;div class="error"&gt;
&lt;h2&gt;Server Error in '/' Application. 
&lt;/h2&gt;
&lt;hr align="center" width="100%" color="silver" noshade size="1"&gt;
&lt;p&gt;
&lt;em&gt;The Controls collection cannot be modified because the control contains code blocks
(i.e. &amp;lt;% ... %&amp;gt;).&lt;/em&gt; 
&lt;br&gt;
&lt;strong&gt;Description: &lt;/strong&gt;An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more information about
the error and where it originated in the code. 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Exception Details: &lt;/strong&gt;System.Web.HttpException: The Controls collection
cannot be modified because the control contains code blocks (i.e. &amp;lt;% ... %&amp;gt;).&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Source Error:&lt;/strong&gt; 
&lt;/p&gt;
&lt;table cellpadding="0" width="100%" border="0" unselectable="on"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Line 132:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
metaKey.Name = "keywords";&lt;br&gt;
Line 133:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
metaKey.Content = p.MetaKeywords;&lt;br&gt;
Line 134:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.Page.Header.Controls.Add(metaKey);&lt;br&gt;
Line 135:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
Line 136:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if (!String.IsNullOrEmpty(p.MetaDescription))
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;br&gt;
&lt;strong&gt;Source File: &lt;/strong&gt;a:\xyz\ContentHandler.aspx.cs&lt;strong&gt; &amp;nbsp;&amp;nbsp; Line: &lt;/strong&gt;134 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Stack Trace:&lt;/strong&gt; 
&lt;/p&gt;
&lt;table cellpadding="0" width="100%" border="0" unselectable="on"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
[HttpException (0x80004005): The Controls collection cannot be modified because the
control contains code blocks (i.e. &amp;lt;% ... %&amp;gt;).]&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.ControlCollection.Add(Control child) +2105903&lt;br&gt;
&amp;nbsp;&amp;nbsp; ContentHandler.Page_Load(Object sender, EventArgs e) in a:\xyz\ContentHandler.aspx.cs:134&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object
o, Object t, EventArgs e) +15&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,
EventArgs e) +34&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.Control.OnLoad(EventArgs e) +99&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.Control.LoadRecursive() +47&lt;br&gt;
&amp;nbsp;&amp;nbsp; System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,
Boolean includeStagesAfterAsyncPoint) +1061
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div align="center"&gt;
&lt;hr align="center" width="100%" color="silver" noshade size="1"&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;Version Information:&lt;/strong&gt;&amp;nbsp;Microsoft .NET Framework Version:2.0.50727.832;
ASP.NET Version:2.0.50727.832 
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Another day, another issue ;)
&lt;/p&gt;
&lt;p&gt;
This had me going around in circles for a while until I realised what it was, if you're
getting this error you can bet your bottom dollar that you have &amp;lt;%= %&amp;gt; somewhere
in your page's header -furthermore I'd hazard a guess that you've got it in some JavaScript
to reference an ASP.Net control on the page- and then you're trying to add a control
to the header programmatically (or a custom control from someone like &lt;a href="http://www.telerik.com/"&gt;Telerik&lt;/a&gt; is
trying to). Am I right&lt;sup&gt;1&lt;/sup&gt;?
&lt;/p&gt;
&lt;p&gt;
&lt;sup&gt;1&lt;/sup&gt; I'm not allowed to ask you to so I won't, but if I was right, then spend
that bottom dollar clicking on one of the Google Ads :P
&lt;/p&gt;
&lt;p&gt;
I can't tell you exactly why this occurs but my understanding of it is that ASP.Net
can't re-create the header if it has Response.Write somewhere in the header (&amp;lt;%=)
-most likely due to when the header is created it's not available (will look into
it). No doubt you want to know the fix?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Fix &lt;/strong&gt;
&lt;br&gt;
The fix is simple, remove the inline code blocks and JavaScript and move it to your
code behind i.e.:
&lt;/p&gt;
&lt;div class="code"&gt;
&lt;div id="closed633235486918437500_1" style="display: none"&gt;&lt;img onclick="showHideCodeDiv('633235486918437500_1', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;_manageSearch&amp;nbsp;=&amp;nbsp;&lt;span style="color: #008b8b"&gt;String&lt;/span&gt;.Format(&lt;b&gt;&lt;span style="color: #00008b"&gt;@'...'&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;lblFindAGift&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;);&lt;/span&gt;
&lt;/div&gt;
&lt;div id="open633235486918437500_1" style="display: block"&gt;&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;_manageSearch&amp;nbsp;=&amp;nbsp;&lt;span style="color: #008b8b"&gt;String&lt;/span&gt;.Format( &lt;span style="color: #800000"&gt;@"&amp;nbsp;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;ManageSearch(){{&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;lbl&amp;nbsp;=&amp;nbsp;document.getElementById(""lblFindAGift"");&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;txt&amp;nbsp;=&amp;nbsp;document.getElementById(""{0}"");&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;btn&amp;nbsp;=&amp;nbsp;document.getElementById(""{1}"");&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.Do&amp;nbsp;Something&amp;nbsp;with&amp;nbsp;it..&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}}",&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;txtSearch.ClientID);&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page.ClientScript.RegisterClientScriptBlock(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.GetType(),&amp;nbsp;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ManageSearch&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;,&amp;nbsp;_manageSearch,&amp;nbsp;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;Remember:&lt;/strong&gt; You need to escape the curly brackets otherwise you will
get a "&lt;a title="Why the heck am I getting String.Format- Exception  of type System.Web.HttpUnhandledException was thrown?" href="http://blogs.thesitedoctor.co.uk/tim/2007/08/22/StringFormat+Exception+Of+Type+SystemWebHttpUnhandledException+Was+Thrown.aspx"&gt;String.Format-
Exception of type System.Web.HttpUnhandledException was thrown&lt;/a&gt;"
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Thanks to Julian Voelcker for sending me &lt;a href="http://west-wind.com/weblog/posts/5758.aspx"&gt;this
alternative "fix" for the problem&lt;/a&gt;, can't say I like it though ;) basically instead
of using &amp;lt;%= ... %&amp;gt; you would write the databinding expression of: &amp;lt;%&lt;strong&gt;#&lt;/strong&gt;&amp;nbsp;...
%&amp;gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,471a0a8c-73af-4bbb-8cdb-cd8cd53f5e36.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Web Development</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=50b98456-7479-4ba0-95cd-ed639381c782</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,50b98456-7479-4ba0-95cd-ed639381c782.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,50b98456-7479-4ba0-95cd-ed639381c782.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=50b98456-7479-4ba0-95cd-ed639381c782</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Type</strong>
          <br />
System.FormatException<br /><strong>Message</strong><br />
Exception of type 'System.Web.HttpUnhandledException' was thrown. 
<br /><strong>StackTrace<br /></strong>at System.Text.StringBuilder.FormatError() 
<br />
at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format,
Object[] args) 
<br />
at System.String.Format(IFormatProvider provider, String format, Object[] args) 
<br /><strong>Error Line</strong><br />
0 
</p>
        <p>
Just got that message (or at most "Exception of type 'System.Web.HttpUnhandledException'
was thrown")? Puzzled? I was the first time I got it, I've been meaning to post about
it for quite some time now so seeing as I got it again today I took the hint.
</p>
        <p>
The error is horrifingly obvious when you know about it, in short, you've no doubt
got some code that looks like this:
</p>
        <div class="code">
          <img src="/img/sc/clear.gif" align="top" />
          <span style="color: #008b8b">String</span>.Format(<span style="color: #800000">"&lt;html&gt;&lt;head&gt;&lt;style</span> <span style="color: #800000">type=\"text/css\"&gt;body{color: #fff;}&lt;/style&gt;&lt;body&gt;..."</span>);<br /></div>
        <p>
Can you spot it now? Notice your style declaration is using the curly brackets? Basically
String.Format is interpreting that as a placeholder i.e. {0} and is throwing a wobbly.
</p>
        <p>
The solution is simple too, just replace all opening/closing brackets with two i.e:
</p>
        <div class="code">
          <img src="/img/sc/clear.gif" align="top" />
          <span style="color: #008b8b">String</span>.Format(<span style="color: #800000">"&lt;html&gt;&lt;head&gt;&lt;style</span> <span style="color: #800000">type=\"text/css\"&gt;body{{color: #fff;}}&lt;/style&gt;&lt;body&gt;..."</span>);<br /></div>
        <p>
I hope that helps someone out there :)
</p>
        <p>
P.S. Watch out for methods that use String.Format as they may catch you out in the
same way -i.e. Subject of System.Net.Mail.MailMessage
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=50b98456-7479-4ba0-95cd-ed639381c782" />
      </body>
      <title>String.Format- Exception of type System.Web.HttpUnhandledException was thrown.</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,50b98456-7479-4ba0-95cd-ed639381c782.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2007/08/22/StringFormatExceptionOfTypeSystemWebHttpUnhandledExceptionWasThrown.aspx</link>
      <pubDate>Wed, 22 Aug 2007 20:43:12 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Type&lt;/strong&gt; 
&lt;br&gt;
System.FormatException&lt;br&gt;
&lt;strong&gt;Message&lt;/strong&gt; 
&lt;br&gt;
Exception of type 'System.Web.HttpUnhandledException' was thrown. 
&lt;br&gt;
&lt;strong&gt;StackTrace&lt;br&gt;
&lt;/strong&gt;at System.Text.StringBuilder.FormatError() 
&lt;br&gt;
at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format,
Object[] args) 
&lt;br&gt;
at System.String.Format(IFormatProvider provider, String format, Object[] args) 
&lt;br&gt;
&lt;strong&gt;Error Line&lt;/strong&gt; 
&lt;br&gt;
0 
&lt;/p&gt;
&lt;p&gt;
Just got that message (or at most "Exception of type 'System.Web.HttpUnhandledException'
was thrown")? Puzzled? I was the first time I got it, I've been meaning to post about
it for quite some time now so seeing as I got it again today I took the hint.
&lt;/p&gt;
&lt;p&gt;
The error is horrifingly obvious when you know about it, in short, you've no doubt
got some code that looks like this:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: #008b8b"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #800000"&gt;"&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000"&gt;type=\"text/css\"&amp;gt;body{color:&amp;nbsp;#fff;}&amp;lt;/style&amp;gt;&amp;lt;body&amp;gt;..."&lt;/span&gt;);&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;
Can you spot it now? Notice your style declaration is using the curly brackets? Basically
String.Format is interpreting that as a placeholder i.e. {0} and is throwing a wobbly.
&lt;/p&gt;
&lt;p&gt;
The solution is simple too, just replace all opening/closing brackets with two i.e:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: #008b8b"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #800000"&gt;"&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000"&gt;type=\"text/css\"&amp;gt;body{{color:&amp;nbsp;#fff;}}&amp;lt;/style&amp;gt;&amp;lt;body&amp;gt;..."&lt;/span&gt;);&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;
I hope that helps someone out there :)
&lt;/p&gt;
&lt;p&gt;
P.S. Watch out for methods that use String.Format as they may catch you out in the
same way -i.e. Subject of System.Net.Mail.MailMessage
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=50b98456-7479-4ba0-95cd-ed639381c782" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,50b98456-7479-4ba0-95cd-ed639381c782.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>The Site Doctor</category>
      <category>Web Development</category>
      <category>WebDD</category>
    </item>
    <item>
      <trackback:ping>http://blogs.thesitedoctor.co.uk/test/Trackback.aspx?guid=b0a9d1b0-5a06-42da-8ff7-238cdc63cd25</trackback:ping>
      <pingback:server>http://blogs.thesitedoctor.co.uk/test/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,b0a9d1b0-5a06-42da-8ff7-238cdc63cd25.aspx</pingback:target>
      <dc:creator>Tim</dc:creator>
      <wfw:comment>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,b0a9d1b0-5a06-42da-8ff7-238cdc63cd25.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.thesitedoctor.co.uk/test/SyndicationService.asmx/GetEntryCommentsRss?guid=b0a9d1b0-5a06-42da-8ff7-238cdc63cd25</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This morning Julian Voelcker came to me with an interesting issue that I’ve looked
into before but I’ve never really looked into a re-useable solution. Seeing as it’s
fun Friday I thought why not ;)
</p>
        <p>
          <strong>The scenario: </strong>
          <em>I would like to offer my users a custom mail merge
facility where by they can insert values stored in the database such as their name.
The selection of columns is unlikely to be changed and if it does then I’ll be the
one to do it. There are about 20 fields to choose from.</em>
        </p>
        <p>
Easy enough, in the past I’ve kept it to a minimum and then just done a simple find
and replace on the body i.e.:
</p>
        <div class="code">
          <img src="/img/sc/clear.gif" align="top" />
          <span style="color: rgb(0, 128, 0);">//</span>
          <span style="color: rgb(0, 128, 0);">Create</span> <span style="color: rgb(0, 128, 0);">a</span> <span style="color: rgb(0, 128, 0);">dataset</span> <span style="color: rgb(0, 128, 0);">and</span> <span style="color: rgb(0, 128, 0);">add</span> <span style="color: rgb(0, 128, 0);">some</span> <span style="color: rgb(0, 128, 0);">test</span> <span style="color: rgb(0, 128, 0);">columns</span><br /><img src="/img/sc/clear.gif" align="top" />DataTable dt = <span style="color: rgb(0, 0, 255);">new</span> DataTable();<br /><img src="/img/sc/clear.gif" align="top" />dt.Columns.Add(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>);<br /><img src="/img/sc/clear.gif" align="top" />dt.Columns.Add(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>);<br /><img src="/img/sc/clear.gif" align="top" /><br /><div id="closed633090566033750000_6" style="display: none;"><img onclick="showHideCodeDiv('633090566033750000_6', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">Add some test data</span></b></div><div id="open633090566033750000_6" style="display: block;"><img onclick="showHideCodeDiv('633090566033750000_6', true)" src="/img/sc/minusNoTopLine.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#region</span></b> Add some test data<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />DataRow dr = dt.NewRow();<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Julian</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">julian@email.com</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dt.Rows.Add(dr);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />dr = dt.NewRow();<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Tim</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">tim@email.com</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dt.Rows.Add(dr);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/clear.gif" align="top" /><br /><div id="closed633090566033750000_20" style="display: none;"><img onclick="showHideCodeDiv('633090566033750000_20', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">Create the example email body</span></b></div><div id="open633090566033750000_20" style="display: block;"><img onclick="showHideCodeDiv('633090566033750000_20', true)" src="/img/sc/minusNoTopLine.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#region</span></b> Create the example email body<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" /><span style="color: rgb(0, 0, 255);">string</span> emailBody = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">&lt;p&gt;This</span> <span style="color: rgb(128, 0, 0);">is</span> <span style="color: rgb(128, 0, 0);">a</span> <span style="color: rgb(128, 0, 0);">test</span> <span style="color: rgb(128, 0, 0);">email</span> <span style="color: rgb(128, 0, 0);">to</span> <span style="color: rgb(128, 0, 0);">{{Name}}</span> <span style="color: rgb(128, 0, 0);">that</span> <span style="color: rgb(128, 0, 0);">would</span> <span style="color: rgb(128, 0, 0);">be</span> <span style="color: rgb(128, 0, 0);">sent</span> <span style="color: rgb(128, 0, 0);">to</span> <span style="color: rgb(128, 0, 0);">the</span> <span style="color: rgb(128, 0, 0);">email</span> <span style="color: rgb(128, 0, 0);">address:</span> <span style="color: rgb(128, 0, 0);">{{Email}}.&lt;/p&gt;</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/clear.gif" align="top" /><br /><div id="closed633090566033750000_26" style="display: none;"><img onclick="showHideCodeDiv('633090566033750000_26', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">Do the work</span></b></div><div id="open633090566033750000_26" style="display: block;"><img onclick="showHideCodeDiv('633090566033750000_26', true)" src="/img/sc/minusNoTopLine.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#region</span></b> Do the work<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" /><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Loop</span> <span style="color: rgb(0, 128, 0);">through</span> <span style="color: rgb(0, 128, 0);">the</span> <span style="color: rgb(0, 128, 0);">rows</span><br /><img src="/img/sc/I.gif" align="top" /><span style="color: rgb(0, 0, 255);">for</span> (<span style="color: rgb(0, 0, 255);">int</span> i = <span style="color: rgb(0, 128, 128);">0</span>; i &lt; dt.Rows.Count; i++)<br /><div id="closed633090566033750000_30" style="display: none;"><img onclick="showHideCodeDiv('633090566033750000_30', false)" src="/img/sc/plus.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090566033750000_30" style="display: block;"><img onclick="showHideCodeDiv('633090566033750000_30', true)" src="/img/sc/minus.gif" align="top" />{<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Get</span> <span style="color: rgb(0, 128, 0);">the</span> <span style="color: rgb(0, 128, 0);">data</span> <span style="color: rgb(0, 128, 0);">row</span> <span style="color: rgb(0, 128, 0);">for</span> <span style="color: rgb(0, 128, 0);">this</span> <span style="color: rgb(0, 128, 0);">instance</span><br /><img src="/img/sc/I.gif" align="top" />    DataRow row = dt.Rows[i];<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Create</span> <span style="color: rgb(0, 128, 0);">a</span> <span style="color: rgb(0, 128, 0);">new</span> <span style="color: rgb(0, 128, 0);">body</span> <span style="color: rgb(0, 128, 0);">as</span> <span style="color: rgb(0, 128, 0);">this'll</span> <span style="color: rgb(0, 128, 0);">be</span> <span style="color: rgb(0, 128, 0);">updated</span> <span style="color: rgb(0, 128, 0);">for</span> <span style="color: rgb(0, 128, 0);">each</span> <span style="color: rgb(0, 128, 0);">user</span><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">string</span> body = <span style="color: rgb(0, 139, 139);">String</span>.Empty;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Update</span> <span style="color: rgb(0, 128, 0);">the</span> <span style="color: rgb(0, 128, 0);">body</span><br /><img src="/img/sc/I.gif" align="top" />    body = emailBody.Replace(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">##Name##</span><span style="color: rgb(128, 0, 0);">"</span>, row[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>]);<br /><img src="/img/sc/I.gif" align="top" />    body = body.Replace(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">##Email##</span><span style="color: rgb(128, 0, 0);">"</span>, row[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>]);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">{0}&lt;hr</span> <span style="color: rgb(128, 0, 0);">/&gt;</span><span style="color: rgb(128, 0, 0);">"</span>, body);<br /><img src="/img/sc/L.gif" align="top" />}
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div></div>
        <p>
The issue I see with this however is (among others) having 20 fields is a lot to be
doing with a find/replace statement as it wouldn’t be very elegant and a nightmare
to manage. Sticking with this method of using a dataset I suggested we use a regular
expression to match the field delimiters and do a replace that way:
</p>
        <div class="code">
          <img src="/img/sc/clear.gif" align="top" />
          <span style="color: rgb(0, 128, 0);">//</span>
          <span style="color: rgb(0, 128, 0);">Create</span> <span style="color: rgb(0, 128, 0);">a</span> <span style="color: rgb(0, 128, 0);">dataset</span> <span style="color: rgb(0, 128, 0);">and</span> <span style="color: rgb(0, 128, 0);">add</span> <span style="color: rgb(0, 128, 0);">some</span> <span style="color: rgb(0, 128, 0);">test</span> <span style="color: rgb(0, 128, 0);">columns</span><br /><img src="/img/sc/clear.gif" align="top" />DataTable dt = <span style="color: rgb(0, 0, 255);">new</span> DataTable();<br /><img src="/img/sc/clear.gif" align="top" />dt.Columns.Add(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>);<br /><img src="/img/sc/clear.gif" align="top" />dt.Columns.Add(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>);<br /><img src="/img/sc/clear.gif" align="top" /><br /><div id="closed633090564520937500_6" style="display: none;"><img onclick="showHideCodeDiv('633090564520937500_6', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">Add some test data</span></b></div><div id="open633090564520937500_6" style="display: block;"><img onclick="showHideCodeDiv('633090564520937500_6', true)" src="/img/sc/minusNoTopLine.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#region</span></b> Add some test data<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />DataRow dr = dt.NewRow();<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Julian</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">julian@email.com</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dt.Rows.Add(dr);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />dr = dt.NewRow();<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Tim</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dr[<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Email</span><span style="color: rgb(128, 0, 0);">"</span>] = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">tim@email.com</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />dt.Rows.Add(dr);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/clear.gif" align="top" /><br /><div id="closed633090564520937500_20" style="display: none;"><img onclick="showHideCodeDiv('633090564520937500_20', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">Create the example email body</span></b></div><div id="open633090564520937500_20" style="display: block;"><img onclick="showHideCodeDiv('633090564520937500_20', true)" src="/img/sc/minusNoTopLine.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#region</span></b> Create the example email body<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" /><span style="color: rgb(0, 0, 255);">string</span> emailBody = <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">&lt;p&gt;This</span> <span style="color: rgb(128, 0, 0);">is</span> <span style="color: rgb(128, 0, 0);">a</span> <span style="color: rgb(128, 0, 0);">test</span> <span style="color: rgb(128, 0, 0);">email</span> <span style="color: rgb(128, 0, 0);">to</span> <span style="color: rgb(128, 0, 0);">{{Name}}</span> <span style="color: rgb(128, 0, 0);">that</span> <span style="color: rgb(128, 0, 0);">would</span> <span style="color: rgb(128, 0, 0);">be</span> <span style="color: rgb(128, 0, 0);">sent</span> <span style="color: rgb(128, 0, 0);">to</span> <span style="color: rgb(128, 0, 0);">the</span> <span style="color: rgb(128, 0, 0);">email</span> <span style="color: rgb(128, 0, 0);">address:</span> <span style="color: rgb(128, 0, 0);">{{Email}}.&lt;/p&gt;</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/clear.gif" align="top" /><br /><div id="closed633090564520937500_26" style="display: none;"><img onclick="showHideCodeDiv('633090564520937500_26', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">Do the work</span></b></div><div id="open633090564520937500_26" style="display: block;"><img onclick="showHideCodeDiv('633090564520937500_26', true)" src="/img/sc/minusNoTopLine.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#region</span></b> Do the work<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" /><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Loop</span> <span style="color: rgb(0, 128, 0);">through</span> <span style="color: rgb(0, 128, 0);">the</span> <span style="color: rgb(0, 128, 0);">rows</span><br /><img src="/img/sc/I.gif" align="top" /><span style="color: rgb(0, 0, 255);">for</span> (<span style="color: rgb(0, 0, 255);">int</span> i = <span style="color: rgb(0, 128, 128);">0</span>; i &lt; dt.Rows.Count; i++)<br /><div id="closed633090564520937500_30" style="display: none;"><img onclick="showHideCodeDiv('633090564520937500_30', false)" src="/img/sc/plus.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090564520937500_30" style="display: block;"><img onclick="showHideCodeDiv('633090564520937500_30', true)" src="/img/sc/minus.gif" align="top" />{<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Get</span> <span style="color: rgb(0, 128, 0);">the</span> <span style="color: rgb(0, 128, 0);">data</span> <span style="color: rgb(0, 128, 0);">row</span> <span style="color: rgb(0, 128, 0);">for</span> <span style="color: rgb(0, 128, 0);">this</span> <span style="color: rgb(0, 128, 0);">instance</span><br /><img src="/img/sc/I.gif" align="top" />    DataRow row = dt.Rows[i];<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    MatchEvaluator replaceField = <span style="color: rgb(0, 0, 255);">delegate</span>(Match m)<br /><div id="closed633090564520937500_35" style="display: none;"><img onclick="showHideCodeDiv('633090564520937500_35', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b>;
</div><div id="open633090564520937500_35" style="display: block;"><img onclick="showHideCodeDiv('633090564520937500_35', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">return</span> row[m.Groups[<span style="color: rgb(0, 128, 128);">1</span>].ToString()].ToString();<br /><img src="/img/sc/L.gif" align="top" />    };
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Create</span> <span style="color: rgb(0, 128, 0);">a</span> <span style="color: rgb(0, 128, 0);">new</span> <span style="color: rgb(0, 128, 0);">body</span> <span style="color: rgb(0, 128, 0);">as</span> <span style="color: rgb(0, 128, 0);">this'll</span> <span style="color: rgb(0, 128, 0);">be</span> <span style="color: rgb(0, 128, 0);">updated</span> <span style="color: rgb(0, 128, 0);">for</span> <span style="color: rgb(0, 128, 0);">each</span> <span style="color: rgb(0, 128, 0);">user</span><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">string</span> body = <span style="color: rgb(0, 139, 139);">String</span>.Empty;<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">Find</span> <span style="color: rgb(0, 128, 0);">the</span> <span style="color: rgb(0, 128, 0);">fields</span><br /><img src="/img/sc/I.gif" align="top" />    Regex r = <span style="color: rgb(0, 0, 255);">new</span> Regex(<span style="color: rgb(128, 0, 0);">@"</span><span style="color: rgb(128, 0, 0);">{{(\w{0,15}?)}}</span><span style="color: rgb(128, 0, 0);">"</span>);<br /><img src="/img/sc/I.gif" align="top" />    body = r.Replace(emailBody, replaceField);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">{0}&lt;hr</span> <span style="color: rgb(128, 0, 0);">/&gt;</span><span style="color: rgb(128, 0, 0);">"</span>, body);<br /><img src="/img/sc/L.gif" align="top" />}
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" /><b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div></div>
        <p>
This is alright and in many ways very scaleable. I’m not a fan of DataSets but in
this instance it works nicely and does mean expanding the available fields at a later
date would just be a matter of adding columns to the query. 
</p>
        <p>
How does this relate to accessing a property of an object using a string value instead?
Well there was a catch, Julian wasn’t using a DataSet and didn’t want to, he had a
collection of custom objects all ready and waiting. As he uses a code generator to
generate his Data Access Layer and Business Logic Layer there was a method already
exposed allowing you to search for a property by string but it's not a standard .Net
method so I decided to work out how it was done. 
</p>
        <p>
The solution it turned out was a really rather elegant solution IMHO. Using reflection
you can use the same concept as above but with custom objects and Robert is your father’s
wife’s sister:
</p>
        <div class="code">
          <h2>Reflection.aspx
</h2>
          <img src="/img/sc/clear.gif" align="top" />&lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Reflection.aspx.cs" Inherits="Reflection" %&gt;<br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(139, 0, 0);">DOCTYPE</span> <span style="color: rgb(255, 0, 0);">html PUBLIC</span> <span style="color: rgb(0, 0, 255);">"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">html</span><span style="color: rgb(255, 0, 0);"> xmlns</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">http://www.w3.org/1999/xhtml</span><span style="color: rgb(0, 0, 255);">"</span> <span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">head</span><span style="color: rgb(255, 0, 0);"> runat</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">server</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />    <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">title</span><span style="color: rgb(0, 0, 255);">&gt;</span>Untitled Page<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/title</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/head</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">body</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />    <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">form</span><span style="color: rgb(255, 0, 0);"> id</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">form1</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> runat</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">server</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />    <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">div</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">h1</span><span style="color: rgb(0, 0, 255);">&gt;</span>Reflection Demo<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/h1</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span>Choose from the following fields to build up your email message, the valid fields are (you can choose whether to use non-valid fields as a test if you like):<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/p</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">ul</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />            <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">li</span><span style="color: rgb(0, 0, 255);">&gt;</span>Id<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/li</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />            <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">li</span><span style="color: rgb(0, 0, 255);">&gt;</span>Email<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/li</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />            <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">li</span><span style="color: rgb(0, 0, 255);">&gt;</span>Name<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/li</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />            <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">li</span><span style="color: rgb(0, 0, 255);">&gt;</span>JoinedDate<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/li</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/ul</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">asp:CheckBox</span><span style="color: rgb(255, 0, 0);"> ID</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">chkCaseSensitive</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> runat</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">server</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> Text</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">Make</span> <span style="color: rgb(0, 0, 255);">the</span> <span style="color: rgb(0, 0, 255);">property</span> <span style="color: rgb(0, 0, 255);">search</span> <span style="color: rgb(0, 0, 255);">case</span> <span style="color: rgb(0, 0, 255);">insensitive</span><span style="color: rgb(0, 0, 255);">"</span> <span style="color: rgb(139, 0, 0);">/</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/p</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">label</span><span style="color: rgb(255, 0, 0);"> for</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">txtEmailBody</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">&gt;</span>Example email body:<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/label</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">br</span> <span style="color: rgb(139, 0, 0);">/</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">asp:TextBox</span><span style="color: rgb(255, 0, 0);"> runat</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">server</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> ID</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">txtEmailBody</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> TextMode</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">MultiLine</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> style</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">width:</span> <span style="color: rgb(0, 0, 255);">500px;</span> <span style="color: rgb(0, 0, 255);">height:</span> <span style="color: rgb(0, 0, 255);">200px;</span><span style="color: rgb(0, 0, 255);">"</span> <span style="color: rgb(139, 0, 0);">/</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/p</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">small</span><span style="color: rgb(0, 0, 255);">&gt;</span>HTML submissions are not allowed and they're encoded anyways so no point in spamming -not that you were going to of course!<span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/small</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/p</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">p</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">asp:Button</span><span style="color: rgb(255, 0, 0);"> runat</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">server</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> ID</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">btnSubmit</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> Text</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">Merge</span> <span style="color: rgb(0, 0, 255);">It!</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> OnClick</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">btnSubmit_Click</span><span style="color: rgb(0, 0, 255);">"</span> <span style="color: rgb(139, 0, 0);">/</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/p</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />        <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">asp:Literal</span><span style="color: rgb(255, 0, 0);"> ID</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">litOutput</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(255, 0, 0);"> runat</span><span style="color: rgb(139, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">"</span><span style="color: rgb(0, 0, 255);">server</span><span style="color: rgb(0, 0, 255);">"</span> <span style="color: rgb(139, 0, 0);">/</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />    <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/div</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" />    <span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/form</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/body</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(139, 0, 0);">/html</span><span style="color: rgb(0, 0, 255);">&gt;</span><br /></div>
        <div class="code">
          <h2>Reflection.aspx.cs
</h2>
          <img src="/img/sc/clear.gif" align="top" />
          <span style="color: rgb(0, 0, 255);">using</span> System;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Data;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.<span style="color: rgb(0, 139, 139);">Configuration</span>;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Collections;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Web;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Web.Security;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Web.UI;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Web.UI.WebControls;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Web.UI.WebControls.WebParts;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Web.UI.HtmlControls;<br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Text.RegularExpressions;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Collections.Generic;<br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">using</span> System.Reflection;<br /><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">public class</span> <span style="color: rgb(0, 139, 139);">TestObject</span><br /><div id="closed633090560672031250_17" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_17', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_17" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_17', true)" src="/img/sc/minusNoTopLine.gif" align="top" />{<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">private int</span> __Id;<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">private string</span> __Name;<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">private string</span> __Email;<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">private</span> DateTime __JoinedDate;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public int</span> Id<br /><div id="closed633090560672031250_24" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_24', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_24" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_24', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">get</span><br /><div id="closed633090560672031250_26" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_26', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_26" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_26', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">return</span> __Id;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">set</span><br /><div id="closed633090560672031250_30" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_30', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_30" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_30', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            __Id = <span style="color: rgb(0, 0, 255);">value</span>;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public string</span> Name<br /><div id="closed633090560672031250_35" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_35', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_35" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_35', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">get</span><br /><div id="closed633090560672031250_37" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_37', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_37" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_37', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">return</span> __Name;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">set</span><br /><div id="closed633090560672031250_41" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_41', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_41" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_41', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            __Name = <span style="color: rgb(0, 0, 255);">value</span>;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public string</span> Email<br /><div id="closed633090560672031250_46" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_46', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_46" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_46', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">get</span><br /><div id="closed633090560672031250_48" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_48', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_48" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_48', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">return</span> __Email;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">set</span><br /><div id="closed633090560672031250_52" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_52', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_52" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_52', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            __Email = <span style="color: rgb(0, 0, 255);">value</span>;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public</span> DateTime JoinedDate<br /><div id="closed633090560672031250_57" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_57', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_57" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_57', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">get</span><br /><div id="closed633090560672031250_59" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_59', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_59" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_59', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">return</span> __JoinedDate;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">set</span><br /><div id="closed633090560672031250_63" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_63', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_63" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_63', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            __JoinedDate = <span style="color: rgb(0, 0, 255);">value</span>;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 0, 255);">int</span> id, <span style="color: rgb(0, 0, 255);">string</span> name, <span style="color: rgb(0, 0, 255);">string</span> email, DateTime joinedDate)<br /><div id="closed633090560672031250_69" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_69', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_69" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_69', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        __Id = id;<br /><img src="/img/sc/I.gif" align="top" />        __Name = name;<br /><img src="/img/sc/I.gif" align="top" />        __Email = email;<br /><img src="/img/sc/I.gif" align="top" />        __JoinedDate = joinedDate;<br /><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public bool</span> GetPropertyValueByName(<span style="color: rgb(0, 0, 255);">string</span> propertyName)<br /><div id="closed633090560672031250_77" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_77', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_77" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_77', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">object</span> obj = <span style="color: rgb(0, 0, 255);">null</span>;<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">return this</span>.GetPropertyValueByName(propertyName, <span style="color: rgb(0, 0, 255);">false</span>, <span style="color: rgb(0, 0, 255);">ref</span> obj);<br /><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public bool</span> GetPropertyValueByName(<span style="color: rgb(0, 0, 255);">string</span> propertyName, <span style="color: rgb(0, 0, 255);">ref object</span> val)<br /><div id="closed633090560672031250_83" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_83', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_83" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_83', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">return this</span>.GetPropertyValueByName(propertyName, <span style="color: rgb(0, 0, 255);">false</span>, <span style="color: rgb(0, 0, 255);">ref</span> val);<br /><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">public bool</span> GetPropertyValueByName(<span style="color: rgb(0, 0, 255);">string</span> propertyName, <span style="color: rgb(0, 0, 255);">bool</span> caseInsensitive, <span style="color: rgb(0, 0, 255);">ref object</span> val)<br /><div id="closed633090560672031250_88" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_88', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_88" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_88', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 139, 139);">PropertyInfo</span> p = <span style="color: rgb(0, 0, 255);">null</span>;<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 139, 139);">BindingFlags</span> flags = <span style="color: rgb(0, 139, 139);">BindingFlags</span>.Instance | <span style="color: rgb(0, 139, 139);">BindingFlags</span>.Public | <span style="color: rgb(0, 139, 139);">BindingFlags</span>.NonPublic;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 128, 0);">//If it's a case-insensitive search then add the flag</span><br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">if</span> (caseInsensitive)<br /><img src="/img/sc/I.gif" align="top" />            flags = flags | <span style="color: rgb(0, 139, 139);">BindingFlags</span>.IgnoreCase;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />        p = <span style="color: rgb(0, 0, 255);">this</span>.GetType().GetProperty(<br /><img src="/img/sc/I.gif" align="top" />               propertyName,<br /><img src="/img/sc/I.gif" align="top" />               flags,<br /><img src="/img/sc/I.gif" align="top" />               <span style="color: rgb(0, 0, 255);">null</span>,<br /><img src="/img/sc/I.gif" align="top" />               <span style="color: rgb(0, 0, 255);">null</span>,<br /><img src="/img/sc/I.gif" align="top" />               Type.EmptyTypes,<br /><img src="/img/sc/I.gif" align="top" />               <span style="color: rgb(0, 0, 255);">null</span>);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 128, 0);">//Check the property exists and that it has read access</span><br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">if</span> (p != <span style="color: rgb(0, 0, 255);">null</span> &amp;&amp; p.CanRead)<br /><div id="closed633090560672031250_106" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_106', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_106" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_106', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 128, 0);">//There is a property that matches the name, we can read it so get it</span><br /><img src="/img/sc/I.gif" align="top" />            val = <span style="color: rgb(0, 0, 255);">this</span>.GetType().InvokeMember(<br /><img src="/img/sc/I.gif" align="top" />                propertyName,<br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 139, 139);">BindingFlags</span>.GetProperty | flags,<br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 0, 255);">null</span>,<br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 0, 255);">this</span>,<br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 0, 255);">null</span>);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 128, 0);">//We return true as the user may just want to check that it exists</span><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">return true</span>;<br /><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">return false</span>;<br /><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/L.gif" align="top" />}
</div><img src="/img/sc/clear.gif" align="top" /><br /><img src="/img/sc/clear.gif" align="top" /><span style="color: rgb(0, 0, 255);">public</span> partial <span style="color: rgb(0, 0, 255);">class</span> Reflection : System.Web.UI.Page<br /><div id="closed633090560672031250_124" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_124', false)" src="/img/sc/PlusNoLines.gif" align="top" /><b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_124" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_124', true)" src="/img/sc/minusNoTopLine.gif" align="top" />{<br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">protected void</span> Page_Load(<span style="color: rgb(0, 0, 255);">object</span> sender, <span style="color: rgb(0, 139, 139);">EventArgs</span> e)<br /><div id="closed633090560672031250_126" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_126', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_126" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_126', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">if</span> (!Page.IsPostBack)<br /><div id="closed633090560672031250_128" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_128', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_128" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_128', true)" src="/img/sc/minus.gif" align="top" />        {<br /><div id="closed633090560672031250_129" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_129', false)" src="/img/sc/plus.gif" align="top" />            <b><span style="color: rgb(0, 0, 139);">Create the example email body</span></b></div><div id="open633090560672031250_129" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_129', true)" src="/img/sc/minus.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#region</span></b> Create the example email body<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            txtEmailBody.Text = <span style="color: rgb(128, 0, 0);">"Dear {{Name}},\r\n\r\nThis is</span> <span style="color: rgb(128, 0, 0);">a test email that would be sent to the email address: {{Email}}.\r\n\r\n{{Name}} joined on: {{JoinedDate}}. This field should not be found {{Don't Find Me}}\r\n\r\nRegards,\r\n\r\nThe webmaster."</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />    <span style="color: rgb(0, 0, 255);">protected void</span> btnSubmit_Click(<span style="color: rgb(0, 0, 255);">object</span> sender, <span style="color: rgb(0, 139, 139);">EventArgs</span> e)<br /><div id="closed633090560672031250_138" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_138', false)" src="/img/sc/plus.gif" align="top" />    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_138" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_138', true)" src="/img/sc/minus.gif" align="top" />    {<br /><img src="/img/sc/I.gif" align="top" />        <span style="color: rgb(0, 0, 255);">if</span> (Page.IsValid &amp;&amp; !<span style="color: rgb(0, 139, 139);">String</span>.IsNullOrEmpty(txtEmailBody.Text))<br /><div id="closed633090560672031250_140" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_140', false)" src="/img/sc/plus.gif" align="top" />        <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_140" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_140', true)" src="/img/sc/minus.gif" align="top" />        {<br /><img src="/img/sc/I.gif" align="top" />            litOutput.Text = <span style="color: rgb(128, 0, 0);">"&lt;h2&gt;Output&lt;/h2&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><div id="closed633090560672031250_143" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_143', false)" src="/img/sc/plus.gif" align="top" />            <b><span style="color: rgb(0, 0, 139);">Perform some basic tests</span></b></div><div id="open633090560672031250_143" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_143', true)" src="/img/sc/minus.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#region</span></b> Perform some basic tests<br /><img src="/img/sc/I.gif" align="top" />            litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;h3&gt;Perform some basic tests:&lt;/h3&gt;</span><span style="color: rgb(128, 0, 0);">"</span>;<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 139, 139);">TestObject</span> testObject = <span style="color: rgb(0, 0, 255);">new</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 128, 128);">1</span>, <span style="color: rgb(128, 0, 0);">"Tim"</span>, <span style="color: rgb(128, 0, 0);">"tim@email.com"</span>, DateTime.Today);<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">object</span> obj = <span style="color: rgb(0, 0, 255);">null</span>;<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">if</span> (testObject.GetPropertyValueByName(<span style="color: rgb(128, 0, 0);">"id"</span>, <span style="color: rgb(0, 0, 255);">false</span>, <span style="color: rgb(0, 0, 255);">ref</span> obj))<br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"&lt;li&gt;{0}&lt;/li&gt;"</span>, obj);<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">else</span><br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;li&gt;Doesn't Exist&lt;/li&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">if</span> (testObject.GetPropertyValueByName(<span style="color: rgb(128, 0, 0);">"name"</span>, <span style="color: rgb(0, 0, 255);">true</span>, <span style="color: rgb(0, 0, 255);">ref</span> obj))<br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"&lt;li&gt;{0}&lt;/li&gt;"</span>, obj);<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">else</span><br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;li&gt;Doesn't Exist&lt;/li&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">if</span> (testObject.GetPropertyValueByName(<span style="color: rgb(128, 0, 0);">"joineddate"</span>, <span style="color: rgb(0, 0, 255);">true</span>, <span style="color: rgb(0, 0, 255);">ref</span> obj))<br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"&lt;li&gt;{0}&lt;/li&gt;"</span>, obj);<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">else</span><br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;li&gt;Doesn't Exist&lt;/li&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">if</span> (testObject.GetPropertyValueByName(<span style="color: rgb(128, 0, 0);">"nothere"</span>, <span style="color: rgb(0, 0, 255);">true</span>, <span style="color: rgb(0, 0, 255);">ref</span> obj))<br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"&lt;li&gt;{0}&lt;/li&gt;"</span>, obj);<br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">else</span><br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;li&gt;Doesn't Exist&lt;/li&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/I.gif" align="top" /><br /><div id="closed633090560672031250_170" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_170', false)" src="/img/sc/plus.gif" align="top" />            <b><span style="color: rgb(0, 0, 139);">Create a collection and add a couple of items</span></b></div><div id="open633090560672031250_170" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_170', true)" src="/img/sc/minus.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#region</span></b> Create a collection and add a couple of items<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            List&lt;TestObject&gt; testObjects = <span style="color: rgb(0, 0, 255);">new</span> List&lt;TestObject&gt;();<br /><img src="/img/sc/I.gif" align="top" />            testObjects.Add(<span style="color: rgb(0, 0, 255);">new</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 128, 128);">1</span>, <span style="color: rgb(128, 0, 0);">"Tim"</span>, <span style="color: rgb(128, 0, 0);">"tim@email.com"</span>, DateTime.Parse(<span style="color: rgb(128, 0, 0);">"01/02/2007"</span>)));<br /><img src="/img/sc/I.gif" align="top" />            testObjects.Add(<span style="color: rgb(0, 0, 255);">new</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 128, 128);">2</span>, <span style="color: rgb(128, 0, 0);">"Jim"</span>, <span style="color: rgb(128, 0, 0);">"jim@email.com"</span>, DateTime.Parse(<span style="color: rgb(128, 0, 0);">"20/02/2007"</span>)));<br /><img src="/img/sc/I.gif" align="top" />            testObjects.Add(<span style="color: rgb(0, 0, 255);">new</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 128, 128);">3</span>, <span style="color: rgb(128, 0, 0);">"John"</span>, <span style="color: rgb(128, 0, 0);">"john@email.com"</span>, DateTime.Parse(<span style="color: rgb(128, 0, 0);">"02/03/2007"</span>)));<br /><img src="/img/sc/I.gif" align="top" />            testObjects.Add(<span style="color: rgb(0, 0, 255);">new</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 128, 128);">4</span>, <span style="color: rgb(128, 0, 0);">"Gill"</span>, <span style="color: rgb(128, 0, 0);">"gill@email.com"</span>, DateTime.Parse(<span style="color: rgb(128, 0, 0);">"01/04/2007"</span>)));<br /><img src="/img/sc/I.gif" align="top" />            testObjects.Add(<span style="color: rgb(0, 0, 255);">new</span> <span style="color: rgb(0, 139, 139);">TestObject</span>(<span style="color: rgb(0, 128, 128);">5</span>, <span style="color: rgb(128, 0, 0);">"Bill"</span>, <span style="color: rgb(128, 0, 0);">"bill@email.com"</span>, DateTime.Parse(<span style="color: rgb(128, 0, 0);">"11/02/2007"</span>)));<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/I.gif" align="top" /><br /><div id="closed633090560672031250_181" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_181', false)" src="/img/sc/plus.gif" align="top" />            <b><span style="color: rgb(0, 0, 139);">Do the work</span></b></div><div id="open633090560672031250_181" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_181', true)" src="/img/sc/minus.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#region</span></b> Do the work<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 128, 0);">//Format it with &lt;pre&gt; for simplicity</span><br /><img src="/img/sc/I.gif" align="top" />            litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;h3&gt;Now for the reflection</span> <span style="color: rgb(128, 0, 0);">example:&lt;/h3&gt;&lt;hr /&gt;&lt;pre&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 128, 0);">//Loop through the rows</span><br /><img src="/img/sc/I.gif" align="top" />            <span style="color: rgb(0, 0, 255);">foreach</span> (<span style="color: rgb(0, 139, 139);">TestObject</span> t <span style="color: rgb(0, 0, 255);">in</span> testObjects)<br /><div id="closed633090560672031250_188" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_188', false)" src="/img/sc/plus.gif" align="top" />            <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_188" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_188', true)" src="/img/sc/minus.gif" align="top" />            {<br /><img src="/img/sc/I.gif" align="top" />                MatchEvaluator replaceField = <span style="color: rgb(0, 0, 255);">delegate</span>(Match m)<br /><div id="closed633090560672031250_190" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_190', false)" src="/img/sc/plus.gif" align="top" />                <b><span style="color: rgb(0, 0, 139);">{...}</span></b>;
</div><div id="open633090560672031250_190" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_190', true)" src="/img/sc/minus.gif" align="top" />                {<br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 128, 0);">//Get the property name (depending on your regex but</span><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 128, 0);">//mine groups the squigly brackets in there incase</span><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 128, 0);">//a match can't be found</span><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 0, 255);">string</span> pName = m.Groups[<span style="color: rgb(0, 128, 128);">2</span>].ToString();<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 128, 0);">//Check it's not null</span><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 0, 255);">if</span> (!<span style="color: rgb(0, 139, 139);">String</span>.IsNullOrEmpty(pName))<br /><div id="closed633090560672031250_198" style="display: none;"><img onclick="showHideCodeDiv('633090560672031250_198', false)" src="/img/sc/plus.gif" align="top" />                    <b><span style="color: rgb(0, 0, 139);">{...}</span></b></div><div id="open633090560672031250_198" style="display: block;"><img onclick="showHideCodeDiv('633090560672031250_198', true)" src="/img/sc/minus.gif" align="top" />                    {<br /><img src="/img/sc/I.gif" align="top" />                        <span style="color: rgb(0, 128, 0);">//Create an object that'll be returned from the method</span><br /><img src="/img/sc/I.gif" align="top" />                        <span style="color: rgb(0, 0, 255);">object</span> o = <span style="color: rgb(0, 0, 255);">null</span>;<br /><img src="/img/sc/I.gif" align="top" />                        <span style="color: rgb(0, 128, 0);">//Check if that property exists, if it does return it</span><br /><img src="/img/sc/I.gif" align="top" />                        <span style="color: rgb(0, 0, 255);">if</span> (t.GetPropertyValueByName(pName, chkCaseSensitive.Checked, <span style="color: rgb(0, 0, 255);">ref</span> o))<br /><img src="/img/sc/I.gif" align="top" />                            <span style="color: rgb(0, 0, 255);">return</span> o.ToString();<br /><img src="/img/sc/L.gif" align="top" />                    }
</div><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 128, 0);">//We've not found a match for the property in the object</span><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 128, 0);">//so return the match instead as it's probably a mistake</span><br /><img src="/img/sc/I.gif" align="top" />                    <span style="color: rgb(0, 0, 255);">return</span> m.Value;<br /><img src="/img/sc/L.gif" align="top" />                };
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 128, 0);">//Create a new body as this'll be updated for each user</span><br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 0, 255);">string</span> body = <span style="color: rgb(0, 139, 139);">String</span>.Empty;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 128, 0);">//Find the fields within the main body -this can be any of the properties of the object</span><br /><img src="/img/sc/I.gif" align="top" />                Regex r = <span style="color: rgb(0, 0, 255);">new</span> Regex(<span style="color: rgb(128, 0, 0);">@"({{)(\w{0,15}?)(}})"</span>);<br /><img src="/img/sc/I.gif" align="top" />                body = r.Replace(txtEmailBody.Text, replaceField);<br /><img src="/img/sc/I.gif" align="top" />                <span style="color: rgb(0, 128, 0);">//Output the example content (HtmlEncoded so not to hurt us!!)</span><br /><img src="/img/sc/I.gif" align="top" />                litOutput.Text += <span style="color: rgb(0, 139, 139);">String</span>.Format(<span style="color: rgb(128, 0, 0);">"{0}&lt;hr /&gt;"</span>, Server.HtmlEncode(body));<br /><img src="/img/sc/L.gif" align="top" />            }
</div><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/I.gif" align="top" />            litOutput.Text += <span style="color: rgb(128, 0, 0);">"&lt;/pre&gt;"</span>;<br /><img src="/img/sc/I.gif" align="top" /><br /><img src="/img/sc/L.gif" align="top" />            <b><span style="color: rgb(0, 0, 255);">#endregion</span></b></div><img src="/img/sc/L.gif" align="top" />        }
</div><img src="/img/sc/L.gif" align="top" />    }
</div><img src="/img/sc/L.gif" align="top" />}
</div></div>
        <p>
I’ve <a href="http://blogs.thesitedoctor.co.uk/tim/demo/Reflection.aspx">thrown up
a quick demo if you want to test it out</a>. I think in the longer run I’m going to
look into having it generate some form of reporting system as that’d be seriously
nice, but the suns out and I need to go for a paddle so that’ll have to wait for another
day! So that's my first delve into reflection and so far I love it! 
</p>
        <img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=b0a9d1b0-5a06-42da-8ff7-238cdc63cd25" />
      </body>
      <title>Accessing properties by a string name</title>
      <guid isPermaLink="false">http://blogs.thesitedoctor.co.uk/test/PermaLink,guid,b0a9d1b0-5a06-42da-8ff7-238cdc63cd25.aspx</guid>
      <link>http://blogs.thesitedoctor.co.uk/test/2007/03/09/AccessingPropertiesByAStringName.aspx</link>
      <pubDate>Fri, 09 Mar 2007 17:12:02 GMT</pubDate>
      <description>&lt;p&gt;
This morning Julian Voelcker came to me with an interesting issue that I’ve looked
into before but I’ve never really looked into a re-useable solution. Seeing as it’s
fun Friday I thought why not ;)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The scenario: &lt;/strong&gt;&lt;em&gt;I would like to offer my users a custom mail merge
facility where by they can insert values stored in the database such as their name.
The selection of columns is unlikely to be changed and if it does then I’ll be the
one to do it. There are about 20 fields to choose from.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Easy enough, in the past I’ve kept it to a minimum and then just done a simple find
and replace on the body i.e.:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Create&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;dataset&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;and&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;add&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;some&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;test&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;columns&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;DataTable&amp;nbsp;dt&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;DataTable();&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;dt.Columns.Add(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;dt.Columns.Add(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090566033750000_6" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_6', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Add&amp;nbsp;some&amp;nbsp;test&amp;nbsp;data&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090566033750000_6" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_6', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Add&amp;nbsp;some&amp;nbsp;test&amp;nbsp;data&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;DataRow&amp;nbsp;dr&amp;nbsp;=&amp;nbsp;dt.NewRow();&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Julian&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;julian@email.com&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dt.Rows.Add(dr);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr&amp;nbsp;=&amp;nbsp;dt.NewRow();&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Tim&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;tim@email.com&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dt.Rows.Add(dr);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090566033750000_20" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_20', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Create&amp;nbsp;the&amp;nbsp;example&amp;nbsp;email&amp;nbsp;body&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090566033750000_20" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_20', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;example&amp;nbsp;email&amp;nbsp;body&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;emailBody&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&amp;lt;p&amp;gt;This&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;test&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;email&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;to&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;{{Name}}&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;that&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;would&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;be&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;sent&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;to&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;email&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;address:&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;{{Email}}.&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090566033750000_26" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_26', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Do&amp;nbsp;the&amp;nbsp;work&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090566033750000_26" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_26', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Do&amp;nbsp;the&amp;nbsp;work&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Loop&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;through&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;rows&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;dt.Rows.Count;&amp;nbsp;i++)&lt;br&gt;
&lt;div id="closed633090566033750000_30" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_30', false)" src="/img/sc/plus.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090566033750000_30" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090566033750000_30', true)" src="/img/sc/minus.gif" align="top"&gt;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Get&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;row&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;for&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;instance&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataRow&amp;nbsp;row&amp;nbsp;=&amp;nbsp;dt.Rows[i];&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Create&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;body&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;this'll&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;be&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;updated&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;for&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;each&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;user&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Empty;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Update&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;body&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;emailBody.Replace(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;##Name##&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;,&amp;nbsp;row[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;body.Replace(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;##Email##&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;,&amp;nbsp;row[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;{0}&amp;lt;hr&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;,&amp;nbsp;body);&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The issue I see with this however is (among others) having 20 fields is a lot to be
doing with a find/replace statement as it wouldn’t be very elegant and a nightmare
to manage. Sticking with this method of using a dataset I suggested we use a regular
expression to match the field delimiters and do a replace that way:
&lt;/p&gt;
&lt;div class="code"&gt;&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Create&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;dataset&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;and&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;add&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;some&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;test&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;columns&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;DataTable&amp;nbsp;dt&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;DataTable();&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;dt.Columns.Add(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;dt.Columns.Add(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090564520937500_6" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_6', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Add&amp;nbsp;some&amp;nbsp;test&amp;nbsp;data&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090564520937500_6" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_6', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Add&amp;nbsp;some&amp;nbsp;test&amp;nbsp;data&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;DataRow&amp;nbsp;dr&amp;nbsp;=&amp;nbsp;dt.NewRow();&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Julian&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;julian@email.com&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dt.Rows.Add(dr);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr&amp;nbsp;=&amp;nbsp;dt.NewRow();&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Tim&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dr[&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;tim@email.com&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;dt.Rows.Add(dr);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090564520937500_20" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_20', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Create&amp;nbsp;the&amp;nbsp;example&amp;nbsp;email&amp;nbsp;body&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090564520937500_20" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_20', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;example&amp;nbsp;email&amp;nbsp;body&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;emailBody&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&amp;lt;p&amp;gt;This&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;test&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;email&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;to&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;{{Name}}&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;that&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;would&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;be&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;sent&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;to&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;email&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;address:&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;{{Email}}.&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090564520937500_26" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_26', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Do&amp;nbsp;the&amp;nbsp;work&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090564520937500_26" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_26', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Do&amp;nbsp;the&amp;nbsp;work&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Loop&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;through&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;rows&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;dt.Rows.Count;&amp;nbsp;i++)&lt;br&gt;
&lt;div id="closed633090564520937500_30" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_30', false)" src="/img/sc/plus.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090564520937500_30" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_30', true)" src="/img/sc/minus.gif" align="top"&gt;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Get&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;row&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;for&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;this&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;instance&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataRow&amp;nbsp;row&amp;nbsp;=&amp;nbsp;dt.Rows[i];&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MatchEvaluator&amp;nbsp;replaceField&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;delegate&lt;/span&gt;(Match&amp;nbsp;m)&lt;br&gt;
&lt;div id="closed633090564520937500_35" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_35', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;;
&lt;/div&gt;
&lt;div id="open633090564520937500_35" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090564520937500_35', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;row[m.Groups[&lt;span style="color: rgb(0, 128, 128);"&gt;1&lt;/span&gt;].ToString()].ToString();&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Create&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;body&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;this'll&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;be&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;updated&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;for&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;each&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;user&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Empty;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Find&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;fields&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Regex&amp;nbsp;r&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;Regex(&lt;span style="color: rgb(128, 0, 0);"&gt;@"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;{{(\w{0,15}?)}}&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;r.Replace(emailBody,&amp;nbsp;replaceField);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;{0}&amp;lt;hr&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;,&amp;nbsp;body);&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This is alright and in many ways very scaleable. I’m not a fan of DataSets but in
this instance it works nicely and does mean expanding the available fields at a later
date would just be a matter of adding columns to the query. 
&lt;/p&gt;
&lt;p&gt;
How does this relate to accessing a property of an object using a string value instead?
Well there was a catch, Julian wasn’t using a DataSet and didn’t want to, he had a
collection of custom objects all ready and waiting. As he uses a code generator to
generate his Data Access Layer and Business Logic Layer there was a method already
exposed allowing you to search for a property by string but it's not a standard .Net
method so I decided to work out how it was done. 
&lt;/p&gt;
&lt;p&gt;
The solution it turned out was a really rather elegant solution IMHO. Using reflection
you can use the same concept as above but with custom objects and Robert is your father’s
wife’s sister:
&lt;/p&gt;
&lt;div class="code"&gt;
&lt;h2&gt;Reflection.aspx
&lt;/h2&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;lt;%@&amp;nbsp;Page&amp;nbsp;Language="C#"&amp;nbsp;AutoEventWireup="true"&amp;nbsp;CodeFile="Reflection.aspx.cs"&amp;nbsp;Inherits="Reflection"&amp;nbsp;%&amp;gt;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;DOCTYPE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;html&amp;nbsp;PUBLIC&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN"&amp;nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;html&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;http://www.w3.org/1999/xhtml&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;head&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;runat&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;title&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Untitled&amp;nbsp;Page&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/title&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/head&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;body&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;form&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;id&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;form1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;runat&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;div&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;h1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Reflection&amp;nbsp;Demo&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/h1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Choose&amp;nbsp;from&amp;nbsp;the&amp;nbsp;following&amp;nbsp;fields&amp;nbsp;to&amp;nbsp;build&amp;nbsp;up&amp;nbsp;your&amp;nbsp;email&amp;nbsp;message,&amp;nbsp;the&amp;nbsp;valid&amp;nbsp;fields&amp;nbsp;are&amp;nbsp;(you&amp;nbsp;can&amp;nbsp;choose&amp;nbsp;whether&amp;nbsp;to&amp;nbsp;use&amp;nbsp;non-valid&amp;nbsp;fields&amp;nbsp;as&amp;nbsp;a&amp;nbsp;test&amp;nbsp;if&amp;nbsp;you&amp;nbsp;like):&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;ul&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Id&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Email&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Name&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;JoinedDate&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/li&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/ul&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;asp:CheckBox&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;ID&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;chkCaseSensitive&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;runat&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Text&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Make&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;the&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;property&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;search&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insensitive&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;label&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;for&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;txtEmailBody&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;Example&amp;nbsp;email&amp;nbsp;body:&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/label&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;br&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;asp:TextBox&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;runat&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;ID&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;txtEmailBody&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;TextMode&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;MultiLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;style&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;width:&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;500px;&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;height:&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;200px;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;small&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;HTML&amp;nbsp;submissions&amp;nbsp;are&amp;nbsp;not&amp;nbsp;allowed&amp;nbsp;and&amp;nbsp;they're&amp;nbsp;encoded&amp;nbsp;anyways&amp;nbsp;so&amp;nbsp;no&amp;nbsp;point&amp;nbsp;in&amp;nbsp;spamming&amp;nbsp;-not&amp;nbsp;that&amp;nbsp;you&amp;nbsp;were&amp;nbsp;going&amp;nbsp;to&amp;nbsp;of&amp;nbsp;course!&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/small&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;asp:Button&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;runat&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;ID&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;btnSubmit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;Text&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Merge&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;It!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;OnClick&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;btnSubmit_Click&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/p&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;asp:Literal&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;ID&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;litOutput&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;runat&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(139, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/div&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/form&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/body&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(139, 0, 0);"&gt;/html&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div class="code"&gt;
&lt;h2&gt;Reflection.aspx.cs
&lt;/h2&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.&lt;span style="color: rgb(0, 139, 139);"&gt;Configuration&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Web;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.Security;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.UI;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.UI.WebControls;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.UI.WebControls.WebParts;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.UI.HtmlControls;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Text.RegularExpressions;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&amp;nbsp;System.Reflection;&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_17" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_17', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_17" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_17', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;private&amp;nbsp;int&lt;/span&gt;&amp;nbsp;__Id;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;private&amp;nbsp;string&lt;/span&gt;&amp;nbsp;__Name;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;private&amp;nbsp;string&lt;/span&gt;&amp;nbsp;__Email;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&amp;nbsp;DateTime&amp;nbsp;__JoinedDate;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;int&lt;/span&gt;&amp;nbsp;Id&lt;br&gt;
&lt;div id="closed633090560672031250_24" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_24', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_24" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_24', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_26" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_26', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_26" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_26', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;__Id;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_30" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_30', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_30" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_30', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__Id&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;string&lt;/span&gt;&amp;nbsp;Name&lt;br&gt;
&lt;div id="closed633090560672031250_35" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_35', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_35" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_35', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_37" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_37', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_37" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_37', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;__Name;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_41" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_41', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_41" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_41', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__Name&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;string&lt;/span&gt;&amp;nbsp;Email&lt;br&gt;
&lt;div id="closed633090560672031250_46" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_46', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_46" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_46', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_48" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_48', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_48" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_48', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;__Email;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_52" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_52', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_52" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_52', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__Email&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&amp;nbsp;DateTime&amp;nbsp;JoinedDate&lt;br&gt;
&lt;div id="closed633090560672031250_57" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_57', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_57" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_57', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_59" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_59', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_59" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_59', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;__JoinedDate;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_63" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_63', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_63" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_63', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__JoinedDate&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;id,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;name,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;email,&amp;nbsp;DateTime&amp;nbsp;joinedDate)&lt;br&gt;
&lt;div id="closed633090560672031250_69" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_69', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_69" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_69', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__Id&amp;nbsp;=&amp;nbsp;id;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__Name&amp;nbsp;=&amp;nbsp;name;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__Email&amp;nbsp;=&amp;nbsp;email;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__JoinedDate&amp;nbsp;=&amp;nbsp;joinedDate;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;bool&lt;/span&gt;&amp;nbsp;GetPropertyValueByName(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;propertyName)&lt;br&gt;
&lt;div id="closed633090560672031250_77" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_77', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_77" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_77', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&amp;nbsp;this&lt;/span&gt;.GetPropertyValueByName(propertyName,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;obj);&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;bool&lt;/span&gt;&amp;nbsp;GetPropertyValueByName(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;propertyName,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&amp;nbsp;object&lt;/span&gt;&amp;nbsp;val)&lt;br&gt;
&lt;div id="closed633090560672031250_83" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_83', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_83" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_83', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&amp;nbsp;this&lt;/span&gt;.GetPropertyValueByName(propertyName,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;val);&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;public&amp;nbsp;bool&lt;/span&gt;&amp;nbsp;GetPropertyValueByName(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;propertyName,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&amp;nbsp;caseInsensitive,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&amp;nbsp;object&lt;/span&gt;&amp;nbsp;val)&lt;br&gt;
&lt;div id="closed633090560672031250_88" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_88', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_88" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_88', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;PropertyInfo&lt;/span&gt;&amp;nbsp;p&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;BindingFlags&lt;/span&gt;&amp;nbsp;flags&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;BindingFlags&lt;/span&gt;.Instance&amp;nbsp;|&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;BindingFlags&lt;/span&gt;.Public&amp;nbsp;|&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;BindingFlags&lt;/span&gt;.NonPublic;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//If&amp;nbsp;it's&amp;nbsp;a&amp;nbsp;case-insensitive&amp;nbsp;search&amp;nbsp;then&amp;nbsp;add&amp;nbsp;the&amp;nbsp;flag&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(caseInsensitive)&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flags&amp;nbsp;=&amp;nbsp;flags&amp;nbsp;|&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;BindingFlags&lt;/span&gt;.IgnoreCase;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;.GetType().GetProperty(&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;propertyName,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flags,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Type.EmptyTypes,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Check&amp;nbsp;the&amp;nbsp;property&amp;nbsp;exists&amp;nbsp;and&amp;nbsp;that&amp;nbsp;it&amp;nbsp;has&amp;nbsp;read&amp;nbsp;access&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(p&amp;nbsp;!=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;p.CanRead)&lt;br&gt;
&lt;div id="closed633090560672031250_106" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_106', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_106" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_106', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//There&amp;nbsp;is&amp;nbsp;a&amp;nbsp;property&amp;nbsp;that&amp;nbsp;matches&amp;nbsp;the&amp;nbsp;name,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;read&amp;nbsp;it&amp;nbsp;so&amp;nbsp;get&amp;nbsp;it&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;val&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;.GetType().InvokeMember(&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;propertyName,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;BindingFlags&lt;/span&gt;.GetProperty&amp;nbsp;|&amp;nbsp;flags,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;,&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//We&amp;nbsp;return&amp;nbsp;true&amp;nbsp;as&amp;nbsp;the&amp;nbsp;user&amp;nbsp;may&amp;nbsp;just&amp;nbsp;want&amp;nbsp;to&amp;nbsp;check&amp;nbsp;that&amp;nbsp;it&amp;nbsp;exists&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&amp;nbsp;true&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&amp;nbsp;false&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;}
&lt;/div&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/clear.gif" align="top"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&amp;nbsp;partial&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&amp;nbsp;Reflection&amp;nbsp;:&amp;nbsp;System.Web.UI.Page&lt;br&gt;
&lt;div id="closed633090560672031250_124" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_124', false)" src="/img/sc/PlusNoLines.gif" align="top"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_124" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_124', true)" src="/img/sc/minusNoTopLine.gif" align="top"&gt;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;protected&amp;nbsp;void&lt;/span&gt;&amp;nbsp;Page_Load(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;EventArgs&lt;/span&gt;&amp;nbsp;e)&lt;br&gt;
&lt;div id="closed633090560672031250_126" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_126', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_126" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_126', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(!Page.IsPostBack)&lt;br&gt;
&lt;div id="closed633090560672031250_128" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_128', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_128" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_128', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;div id="closed633090560672031250_129" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_129', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Create&amp;nbsp;the&amp;nbsp;example&amp;nbsp;email&amp;nbsp;body&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_129" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_129', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Create&amp;nbsp;the&amp;nbsp;example&amp;nbsp;email&amp;nbsp;body&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;txtEmailBody.Text&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"Dear&amp;nbsp;{{Name}},\r\n\r\nThis&amp;nbsp;is&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;a&amp;nbsp;test&amp;nbsp;email&amp;nbsp;that&amp;nbsp;would&amp;nbsp;be&amp;nbsp;sent&amp;nbsp;to&amp;nbsp;the&amp;nbsp;email&amp;nbsp;address:&amp;nbsp;{{Email}}.\r\n\r\n{{Name}}&amp;nbsp;joined&amp;nbsp;on:&amp;nbsp;{{JoinedDate}}.&amp;nbsp;This&amp;nbsp;field&amp;nbsp;should&amp;nbsp;not&amp;nbsp;be&amp;nbsp;found&amp;nbsp;{{Don't&amp;nbsp;Find&amp;nbsp;Me}}\r\n\r\nRegards,\r\n\r\nThe&amp;nbsp;webmaster."&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;protected&amp;nbsp;void&lt;/span&gt;&amp;nbsp;btnSubmit_Click(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;EventArgs&lt;/span&gt;&amp;nbsp;e)&lt;br&gt;
&lt;div id="closed633090560672031250_138" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_138', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_138" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_138', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(Page.IsValid&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.IsNullOrEmpty(txtEmailBody.Text))&lt;br&gt;
&lt;div id="closed633090560672031250_140" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_140', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_140" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_140', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;h2&amp;gt;Output&amp;lt;/h2&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_143" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_143', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Perform&amp;nbsp;some&amp;nbsp;basic&amp;nbsp;tests&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_143" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_143', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Perform&amp;nbsp;some&amp;nbsp;basic&amp;nbsp;tests&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;h3&amp;gt;Perform&amp;nbsp;some&amp;nbsp;basic&amp;nbsp;tests:&amp;lt;/h3&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;&amp;nbsp;testObject&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"Tim"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"tim@email.com"&lt;/span&gt;,&amp;nbsp;DateTime.Today);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(testObject.GetPropertyValueByName(&lt;span style="color: rgb(128, 0, 0);"&gt;"id"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;obj))&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;{0}&amp;lt;/li&amp;gt;"&lt;/span&gt;,&amp;nbsp;obj);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;Doesn't&amp;nbsp;Exist&amp;lt;/li&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(testObject.GetPropertyValueByName(&lt;span style="color: rgb(128, 0, 0);"&gt;"name"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;obj))&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;{0}&amp;lt;/li&amp;gt;"&lt;/span&gt;,&amp;nbsp;obj);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;Doesn't&amp;nbsp;Exist&amp;lt;/li&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(testObject.GetPropertyValueByName(&lt;span style="color: rgb(128, 0, 0);"&gt;"joineddate"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;obj))&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;{0}&amp;lt;/li&amp;gt;"&lt;/span&gt;,&amp;nbsp;obj);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;Doesn't&amp;nbsp;Exist&amp;lt;/li&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(testObject.GetPropertyValueByName(&lt;span style="color: rgb(128, 0, 0);"&gt;"nothere"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;obj))&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;{0}&amp;lt;/li&amp;gt;"&lt;/span&gt;,&amp;nbsp;obj);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;li&amp;gt;Doesn't&amp;nbsp;Exist&amp;lt;/li&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_170" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_170', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Create&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;and&amp;nbsp;add&amp;nbsp;a&amp;nbsp;couple&amp;nbsp;of&amp;nbsp;items&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_170" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_170', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;and&amp;nbsp;add&amp;nbsp;a&amp;nbsp;couple&amp;nbsp;of&amp;nbsp;items&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;TestObject&amp;gt;&amp;nbsp;testObjects&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;TestObject&amp;gt;();&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testObjects.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"Tim"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"tim@email.com"&lt;/span&gt;,&amp;nbsp;DateTime.Parse(&lt;span style="color: rgb(128, 0, 0);"&gt;"01/02/2007"&lt;/span&gt;)));&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testObjects.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"Jim"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"jim@email.com"&lt;/span&gt;,&amp;nbsp;DateTime.Parse(&lt;span style="color: rgb(128, 0, 0);"&gt;"20/02/2007"&lt;/span&gt;)));&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testObjects.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;3&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"John"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"john@email.com"&lt;/span&gt;,&amp;nbsp;DateTime.Parse(&lt;span style="color: rgb(128, 0, 0);"&gt;"02/03/2007"&lt;/span&gt;)));&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testObjects.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;4&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"Gill"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"gill@email.com"&lt;/span&gt;,&amp;nbsp;DateTime.Parse(&lt;span style="color: rgb(128, 0, 0);"&gt;"01/04/2007"&lt;/span&gt;)));&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testObjects.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 128);"&gt;5&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"Bill"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"bill@email.com"&lt;/span&gt;,&amp;nbsp;DateTime.Parse(&lt;span style="color: rgb(128, 0, 0);"&gt;"11/02/2007"&lt;/span&gt;)));&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;div id="closed633090560672031250_181" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_181', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;Do&amp;nbsp;the&amp;nbsp;work&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_181" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_181', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;/b&gt;&amp;nbsp;Do&amp;nbsp;the&amp;nbsp;work&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Format&amp;nbsp;it&amp;nbsp;with&amp;nbsp;&amp;lt;pre&amp;gt;&amp;nbsp;for&amp;nbsp;simplicity&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;h3&amp;gt;Now&amp;nbsp;for&amp;nbsp;the&amp;nbsp;reflection&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;example:&amp;lt;/h3&amp;gt;&amp;lt;hr&amp;nbsp;/&amp;gt;&amp;lt;pre&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Loop&amp;nbsp;through&amp;nbsp;the&amp;nbsp;rows&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 139, 139);"&gt;TestObject&lt;/span&gt;&amp;nbsp;t&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&amp;nbsp;testObjects)&lt;br&gt;
&lt;div id="closed633090560672031250_188" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_188', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_188" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_188', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MatchEvaluator&amp;nbsp;replaceField&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;delegate&lt;/span&gt;(Match&amp;nbsp;m)&lt;br&gt;
&lt;div id="closed633090560672031250_190" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_190', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;;
&lt;/div&gt;
&lt;div id="open633090560672031250_190" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_190', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Get&amp;nbsp;the&amp;nbsp;property&amp;nbsp;name&amp;nbsp;(depending&amp;nbsp;on&amp;nbsp;your&amp;nbsp;regex&amp;nbsp;but&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//mine&amp;nbsp;groups&amp;nbsp;the&amp;nbsp;squigly&amp;nbsp;brackets&amp;nbsp;in&amp;nbsp;there&amp;nbsp;incase&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//a&amp;nbsp;match&amp;nbsp;can't&amp;nbsp;be&amp;nbsp;found&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;pName&amp;nbsp;=&amp;nbsp;m.Groups[&lt;span style="color: rgb(0, 128, 128);"&gt;2&lt;/span&gt;].ToString();&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Check&amp;nbsp;it's&amp;nbsp;not&amp;nbsp;null&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.IsNullOrEmpty(pName))&lt;br&gt;
&lt;div id="closed633090560672031250_198" style="display: none;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_198', false)" src="/img/sc/plus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 139);"&gt;{...}&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;div id="open633090560672031250_198" style="display: block;"&gt;&lt;img onclick="showHideCodeDiv('633090560672031250_198', true)" src="/img/sc/minus.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Create&amp;nbsp;an&amp;nbsp;object&amp;nbsp;that'll&amp;nbsp;be&amp;nbsp;returned&amp;nbsp;from&amp;nbsp;the&amp;nbsp;method&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;&amp;nbsp;o&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Check&amp;nbsp;if&amp;nbsp;that&amp;nbsp;property&amp;nbsp;exists,&amp;nbsp;if&amp;nbsp;it&amp;nbsp;does&amp;nbsp;return&amp;nbsp;it&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(t.GetPropertyValueByName(pName,&amp;nbsp;chkCaseSensitive.Checked,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&amp;nbsp;o))&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;o.ToString();&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//We've&amp;nbsp;not&amp;nbsp;found&amp;nbsp;a&amp;nbsp;match&amp;nbsp;for&amp;nbsp;the&amp;nbsp;property&amp;nbsp;in&amp;nbsp;the&amp;nbsp;object&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//so&amp;nbsp;return&amp;nbsp;the&amp;nbsp;match&amp;nbsp;instead&amp;nbsp;as&amp;nbsp;it's&amp;nbsp;probably&amp;nbsp;a&amp;nbsp;mistake&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&amp;nbsp;m.Value;&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;body&amp;nbsp;as&amp;nbsp;this'll&amp;nbsp;be&amp;nbsp;updated&amp;nbsp;for&amp;nbsp;each&amp;nbsp;user&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Empty;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Find&amp;nbsp;the&amp;nbsp;fields&amp;nbsp;within&amp;nbsp;the&amp;nbsp;main&amp;nbsp;body&amp;nbsp;-this&amp;nbsp;can&amp;nbsp;be&amp;nbsp;any&amp;nbsp;of&amp;nbsp;the&amp;nbsp;properties&amp;nbsp;of&amp;nbsp;the&amp;nbsp;object&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Regex&amp;nbsp;r&amp;nbsp;=&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&amp;nbsp;Regex(&lt;span style="color: rgb(128, 0, 0);"&gt;@"({{)(\w{0,15}?)(}})"&lt;/span&gt;);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;=&amp;nbsp;r.Replace(txtEmailBody.Text,&amp;nbsp;replaceField);&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;//Output&amp;nbsp;the&amp;nbsp;example&amp;nbsp;content&amp;nbsp;(HtmlEncoded&amp;nbsp;so&amp;nbsp;not&amp;nbsp;to&amp;nbsp;hurt&amp;nbsp;us!!)&lt;/span&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(0, 139, 139);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(128, 0, 0);"&gt;"{0}&amp;lt;hr&amp;nbsp;/&amp;gt;"&lt;/span&gt;,&amp;nbsp;Server.HtmlEncode(body));&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;litOutput.Text&amp;nbsp;+=&amp;nbsp;&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;/pre&amp;gt;"&lt;/span&gt;;&lt;br&gt;
&lt;img src="/img/sc/I.gif" align="top"&gt;
&lt;br&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/div&gt;
&lt;img src="/img/sc/L.gif" align="top"&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
I’ve &lt;a href="http://blogs.thesitedoctor.co.uk/tim/demo/Reflection.aspx"&gt;thrown up
a quick demo if you want to test it out&lt;/a&gt;. I think in the longer run I’m going to
look into having it generate some form of reporting system as that’d be seriously
nice, but the suns out and I need to go for a paddle so that’ll have to wait for another
day! So that's my first delve into reflection and so far I love it! 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.thesitedoctor.co.uk/test/aggbug.ashx?id=b0a9d1b0-5a06-42da-8ff7-238cdc63cd25" /&gt;</description>
      <comments>http://blogs.thesitedoctor.co.uk/test/CommentView,guid,b0a9d1b0-5a06-42da-8ff7-238cdc63cd25.aspx</comments>
      <category>ASP.Net</category>
      <category>C#</category>
      <category>Web Development</category>
    </item>
  </channel>
</rss>