<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">KoenV</title><subtitle type="html">
</subtitle><id>http://weblogs.asp.net/koenv/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/koenv/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2008-01-25T00:26:00Z</updated><entry><title>.NET and SMTP Configuration</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2010/12/06/net-and-smtp-configuration.aspx" /><id>http://weblogs.asp.net/koenv/archive/2010/12/06/net-and-smtp-configuration.aspx</id><published>2010-12-06T12:53:06Z</published><updated>2010-12-06T12:53:06Z</updated><content type="html">&lt;p&gt;Sometimes I feel stupid about discovering .NET features that have been there since an old release (2.0 in this case)...&lt;/p&gt;  &lt;p&gt;Apparently you can just use this configSecion “mailSettings” and never have to configure your SmtpClient instance in code again (no, not hard-coded):&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: "&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: "&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;system.net&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;            &lt;br /&gt;&lt;span style="color: "&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;mailSettings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;            &lt;br /&gt;&lt;span style="color: "&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;smtp&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;deliveryMethod&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Network&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;from&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;My Display Name &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;&amp;amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;myname@mydomain.com&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;&amp;amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;            &lt;br /&gt;&lt;span style="color: "&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;network&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;host&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;mail.server.com&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;            &lt;br /&gt;&lt;span style="color: "&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;smtp&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;            &lt;br /&gt;&lt;span style="color: "&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;mailSettings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font style="font-size: "&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;            &lt;br /&gt;&lt;span style="color: "&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;system.net&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: " color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: "&gt;Now you can go all like:&lt;/span&gt;&lt;/p&gt;  &lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: "&gt;new&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: "&gt;&lt;font color="#000000"&gt;&amp;#160;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00008b"&gt;SmtpClient&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;().&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#008b8b"&gt;Send&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;(mailMessage);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font size="2" face="Tahoma"&gt;…and everything is configured for you, even the from address (which you can obviously override).&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7656866" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/koenv/archive/tags/.NET/default.aspx" /><category term="Configuration" scheme="http://weblogs.asp.net/koenv/archive/tags/Configuration/default.aspx" /><category term="SMTP" scheme="http://weblogs.asp.net/koenv/archive/tags/SMTP/default.aspx" /></entry><entry><title>Visual Studio 2010 tip: Cut empty lines</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2010/06/17/visual-studio-2010-tip-cut-empty-lines.aspx" /><id>http://weblogs.asp.net/koenv/archive/2010/06/17/visual-studio-2010-tip-cut-empty-lines.aspx</id><published>2010-06-17T14:38:37Z</published><updated>2010-06-17T14:38:37Z</updated><content type="html">&lt;p align="left"&gt;How many times you wanted to move 2 lines by cut and pasting them, but the line you cut last is actually a blank line and your actual code is removed from the clipboard? Visual Studio 2010 has an option that keeps cutting blank lines from overwriting the clipboard. Go and uncheck this one: Tools » Options » Text Editor » All Languages » General » Apply Cut or Copy commands to blank lines when there is no selection&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/koenv/image_1C8069E1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/koenv/image_thumb_0B9BC5F1.png" width="531" height="420" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;Extra (related) tip&lt;/h4&gt;  &lt;p align="left"&gt;The (free) Visual Studio 2010 extension &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef" target="_blank"&gt;Visual Studio 2010 Pro Power Tools&lt;/a&gt; contains (apart from a bunch of other handy features) the commands Edit.MoveLineUp and Edit.MoveLineDown to do whatever they say they do and maps them automatically to keyboard shortcuts Alt+Up &amp;amp; Alt+Down.&lt;/p&gt;  &lt;p&gt;Resharper (not-free) has similar commands for moving lines, by default mapped to Ctrl+Alt+Shift+Up/Down.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7534492" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="Visual Studio" scheme="http://weblogs.asp.net/koenv/archive/tags/Visual+Studio/default.aspx" /><category term=".NET" scheme="http://weblogs.asp.net/koenv/archive/tags/.NET/default.aspx" /></entry><entry><title>AgUnit - Silverlight unit testing with ReSharper</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2010/05/31/agunit-silverlight-unit-testing-with-resharper.aspx" /><id>http://weblogs.asp.net/koenv/archive/2010/05/31/agunit-silverlight-unit-testing-with-resharper.aspx</id><published>2010-05-31T08:10:32Z</published><updated>2010-05-31T08:10:32Z</updated><content type="html">&lt;p&gt;If you’re a ReSharper user and Silverlight 4 developer you’ll probably like this add-in that two of my co-workers created. It lets you run your Silverlight unit tests inside the Visual Studio IDE.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/koenv/agunit1_35755B53.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="agunit[1]" border="0" alt="agunit[1]" src="http://weblogs.asp.net/blogs/koenv/agunit1_thumb_52EA3D10.png" width="527" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can get the add-in from Codeplex: &lt;a title="http://agunit.codeplex.com/" href="http://agunit.codeplex.com/"&gt;http://agunit.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(requires ReSharper 5 and Silverlight 4)&lt;/em&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7511603" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="Visual Studio" scheme="http://weblogs.asp.net/koenv/archive/tags/Visual+Studio/default.aspx" /><category term="ReSharper" scheme="http://weblogs.asp.net/koenv/archive/tags/ReSharper/default.aspx" /><category term="Silverlight" scheme="http://weblogs.asp.net/koenv/archive/tags/Silverlight/default.aspx" /></entry><entry><title>Generically correcting data before save with Entity Framework</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2010/05/28/generically-correcting-data-before-save-with-entity-framework.aspx" /><id>http://weblogs.asp.net/koenv/archive/2010/05/28/generically-correcting-data-before-save-with-entity-framework.aspx</id><published>2010-05-28T12:04:00Z</published><updated>2010-05-28T12:04:00Z</updated><content type="html">&lt;P&gt;Been working with Entity Framework (.NET 4.0) for a week now for a data migration job&amp;nbsp;and needed some code that generically corrects string values in the database. You probably also&amp;nbsp;have seen things like empty strings instead of NULL or&amp;nbsp;non-trimmed&amp;nbsp;texts ("United States&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ")&amp;nbsp;in "old" databases, and you don't want to apply a correcting function on every column you migrate.&lt;/P&gt;
&lt;P&gt;Here's how I've done&amp;nbsp;this (extending the partial class of my ObjectContext):&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt; &lt;SPAN style="COLOR: blue"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkblue"&gt;MyDatacontext&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;OnContextCreated&lt;/SPAN&gt;()&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: fuchsia"&gt;SavingChanges&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;+=&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;OnSavingChanges&lt;/SPAN&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;OnSavingChanges&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: darkblue"&gt;EventArgs&lt;/SPAN&gt; e)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; &lt;B&gt;entity&lt;/B&gt; &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;GetPersistingEntities&lt;/SPAN&gt;(sender))&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; &lt;B&gt;propertyInfo&lt;/B&gt; &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;GetStringProperties&lt;/SPAN&gt;(&lt;B&gt;entity&lt;/B&gt;))&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt; value = (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;)&lt;B&gt;propertyInfo&lt;/B&gt;.&lt;SPAN style="COLOR: darkcyan"&gt;GetValue&lt;/SPAN&gt;(&lt;B&gt;entity&lt;/B&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (value == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;continue&lt;/SPAN&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;BR&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (value.&lt;SPAN style="COLOR: darkcyan"&gt;Trim&lt;/SPAN&gt;().&lt;SPAN style="COLOR: purple"&gt;Length&lt;/SPAN&gt; == 0 &amp;amp;&amp;amp; &lt;SPAN style="COLOR: darkcyan"&gt;IsNullable&lt;/SPAN&gt;(&lt;B&gt;propertyInfo&lt;/B&gt;))&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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; &lt;/SPAN&gt;&lt;B&gt;propertyInfo&lt;/B&gt;.&lt;SPAN style="COLOR: darkcyan"&gt;SetValue&lt;/SPAN&gt;(&lt;B&gt;entity&lt;/B&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (value != value.&lt;SPAN style="COLOR: darkcyan"&gt;Trim&lt;/SPAN&gt;())&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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; &lt;/SPAN&gt;&lt;B&gt;propertyInfo&lt;/B&gt;.&lt;SPAN style="COLOR: darkcyan"&gt;SetValue&lt;/SPAN&gt;(&lt;B&gt;entity&lt;/B&gt;, value.&lt;SPAN style="COLOR: darkcyan"&gt;Trim&lt;/SPAN&gt;(), &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&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&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkblue"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt;&amp;gt; &lt;SPAN style="COLOR: darkcyan"&gt;GetPersistingEntities&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; ((&lt;SPAN style="COLOR: darkblue"&gt;ObjectContext&lt;/SPAN&gt;)sender).&lt;SPAN style="COLOR: purple"&gt;ObjectStateManager&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&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: darkcyan"&gt;GetObjectStateEntries&lt;/SPAN&gt;(&lt;SPAN style="COLOR: darkblue"&gt;EntityState&lt;/SPAN&gt;.&lt;B&gt;&lt;SPAN style="COLOR: purple"&gt;Added&lt;/SPAN&gt;&lt;/B&gt; | &lt;SPAN style="COLOR: darkblue"&gt;EntityState&lt;/SPAN&gt;.&lt;B&gt;&lt;SPAN style="COLOR: purple"&gt;Modified&lt;/SPAN&gt;&lt;/B&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&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: darkcyan"&gt;Select&lt;/SPAN&gt;(e =&amp;gt; e.&lt;SPAN style="COLOR: purple"&gt;Entity&lt;/SPAN&gt;);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkblue"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: darkblue"&gt;PropertyInfo&lt;/SPAN&gt;&amp;gt; &lt;SPAN style="COLOR: darkcyan"&gt;GetStringProperties&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; entity)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; entity.&lt;SPAN style="COLOR: darkcyan"&gt;GetType&lt;/SPAN&gt;().&lt;SPAN style="COLOR: darkcyan"&gt;GetProperties&lt;/SPAN&gt;()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;.&lt;SPAN style="COLOR: darkcyan"&gt;Where&lt;/SPAN&gt;(pi =&amp;gt; pi.&lt;SPAN style="COLOR: purple"&gt;PropertyType&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;==&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;));&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; &lt;SPAN style="COLOR: darkcyan"&gt;IsNullable&lt;/SPAN&gt;(&lt;SPAN style="COLOR: darkblue"&gt;PropertyInfo&lt;/SPAN&gt; propertyInfo)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; ((&lt;SPAN style="COLOR: darkblue"&gt;EdmScalarPropertyAttribute&lt;/SPAN&gt;)propertyInfo&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&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: darkcyan"&gt;GetCustomAttributes&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: darkblue"&gt;EdmScalarPropertyAttribute&lt;/SPAN&gt;), &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;)&lt;BR&gt;&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: darkcyan"&gt;Single&lt;/SPAN&gt;()).&lt;SPAN style="COLOR: purple"&gt;IsNullable&lt;/SPAN&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;BR&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;Obviously you can use similar code for&amp;nbsp;other&amp;nbsp;generic corrections.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7508771" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="Entity Framework" scheme="http://weblogs.asp.net/koenv/archive/tags/Entity+Framework/default.aspx" /><category term=".NET" scheme="http://weblogs.asp.net/koenv/archive/tags/.NET/default.aspx" /></entry><entry><title>Error pages in ASP.NET</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2010/05/18/error-pages-in-asp-net.aspx" /><id>http://weblogs.asp.net/koenv/archive/2010/05/18/error-pages-in-asp-net.aspx</id><published>2010-05-18T11:37:00Z</published><updated>2010-05-18T11:37:00Z</updated><content type="html">&lt;P&gt;In ASP.NET you can retrieve the last unhandled exception via:&lt;/P&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; COLOR: #2b91af; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;HttpContext&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;.Current.)Server.GetLastError() &lt;SPAN style="COLOR: green"&gt;// Server object is available as a property in Page and UserControl context&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US" lang=EN-US&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;P&gt;This obviously only works in the same roundtrip. If you want to retrieve this information in your error page, you got a problem because the error page is not returned in the same roundtrip. The server responds with a redirect response and a new request to the error page is automatically sent. A common workaround would be to store the exception in your Session state from the Application_Error event in Global.asax.&lt;/P&gt;
&lt;P&gt;From ASP.NET 3.5 you can configure the redirect mode for error pages:&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 10pt" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; COLOR: #a31515; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;customErrors&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; COLOR: red; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;mode&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;=&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 10pt; mso-ansi-language: EN-US; mso-no-proof: yes" lang=EN-US&gt;"&lt;SPAN style="COLOR: blue"&gt;On&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;defaultRedirect&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;~/Error.aspx&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;redirectMode&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;ResponseRewrite&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This way the redirect response is not sent and the error page is returned right away. That implies that the browser is not aware of a page change and cannot reflect it in the address bar, so your original URL is not replaced with the URL of the error page, which might be what you actually want…&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7487833" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/koenv/archive/tags/ASP.NET/default.aspx" /><category term="error handling" scheme="http://weblogs.asp.net/koenv/archive/tags/error+handling/default.aspx" /><category term="customerrors" scheme="http://weblogs.asp.net/koenv/archive/tags/customerrors/default.aspx" /></entry><entry><title>VTM goes Surface</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2009/06/08/vtm-goes-surface.aspx" /><id>http://weblogs.asp.net/koenv/archive/2009/06/08/vtm-goes-surface.aspx</id><published>2009-06-08T16:15:00Z</published><updated>2009-06-08T16:15:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;My colleague &lt;a href="http://blog.kristofrennen.be/" mce_href="http://blog.kristofrennen.be/"&gt;Kristof&lt;/a&gt; wrote an &lt;a href="http://blog.kristofrennen.be/index.php/2009/06/vtm-goes-surface/" mce_href="http://blog.kristofrennen.be/index.php/2009/06/vtm-goes-surface/"&gt;article&lt;/a&gt; about a Surface project he did for &lt;a href="http://www.vtm.be/nieuws" mce_href="http://www.vtm.be/nieuws"&gt;VTM&lt;/a&gt; (Belgian national television) and it was used during yesterdays' election show.&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7113494" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="wpf" scheme="http://weblogs.asp.net/koenv/archive/tags/wpf/default.aspx" /><category term="surface" scheme="http://weblogs.asp.net/koenv/archive/tags/surface/default.aspx" /></entry><entry><title>DataSource parameter for code-behind property</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2009/02/03/datasource-parameter-for-code-behind-property.aspx" /><id>http://weblogs.asp.net/koenv/archive/2009/02/03/datasource-parameter-for-code-behind-property.aspx</id><published>2009-02-03T10:19:00Z</published><updated>2009-02-03T10:19:00Z</updated><content type="html">&lt;p&gt;Here's some code for a server control "PropertyParameter" that you can use as a SelectParameter in your xyzDataSource that binds (one-way!) to a property value that is defined in code behind. This is something I need sometimes and isn't available out-of-the-box.&lt;/p&gt;

&lt;p&gt;This method uses reflection and requires the property in code-behind to be public. There are two implementations, one for a Page and one for a UserControl. You will need to specify the Target property if you use it inside a UserControl.&lt;/p&gt;

&lt;p&gt;This is how you use it in your markup: &lt;br&gt;&lt;/p&gt;
&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ObjectDataSource&lt;/span&gt; &lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;="StatusObjectDataSource"&lt;/span&gt; &lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;TypeName&lt;/span&gt;&lt;span style="color: blue;"&gt;="Components.WorkflowSecurity.WorkflowComponent"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;SelectMethod&lt;/span&gt;&lt;span style="color: blue;"&gt;="GetAvailableStatusesForEntityType"&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;SelectParameters&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;controls&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;PropertyParameter&lt;/span&gt; &lt;span style="color: red;"&gt;Name&lt;/span&gt;&lt;span style="color: blue;"&gt;="entityType"&lt;/span&gt; &lt;span style="color: red;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: red;"&gt;            PropertyName&lt;/span&gt;&lt;span style="color: blue;"&gt;="EntityType"&lt;/span&gt; &lt;span style="color: red;"&gt;Target&lt;/span&gt;&lt;span style="color: blue;"&gt;="Page"&lt;/span&gt; &lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;SelectParameters&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ObjectDataSource&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is the the code for the server control:&lt;/p&gt;
&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyParameter&lt;/span&gt; : &lt;span style="color: rgb(43, 145, 175);"&gt;Parameter&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;{&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;enum&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyTargetEnum&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Page,&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; UserControl&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; PropertyName { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyTargetEnum&lt;/span&gt; Target { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; PropertyParameter()&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Target = &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyTargetEnum&lt;/span&gt;.Page;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt; Evaluate(&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;HttpContext&lt;/span&gt; context, &lt;span style="color: rgb(43, 145, 175);"&gt;Control&lt;/span&gt; control)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(PropertyName))&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="color: rgb(163, 21, 21);"&gt;"PropertyName"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;Control&lt;/span&gt; targetControl = ResolvePropertyTarget(control);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;Type&lt;/span&gt; pageType = targetControl.GetType();&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyInfo&lt;/span&gt; pi = pageType.GetProperty(PropertyName, &lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.Instance | &lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.Public | &lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;BindingFlags&lt;/span&gt;.NonPublic);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (pi == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;InvalidOperationException&lt;/span&gt;(&lt;/pre&gt;
&lt;pre style="margin: 0px;"&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: blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"Property '{0}' not found on {1}."&lt;/span&gt;, &lt;/pre&gt;
&lt;pre style="margin: 0px;"&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; PropertyName, Target));&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; pi.GetValue(targetControl, &lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Control&lt;/span&gt; ResolvePropertyTarget(&lt;span style="color: rgb(43, 145, 175);"&gt;Control&lt;/span&gt; control)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;switch&lt;/span&gt; (Target)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyTargetEnum&lt;/span&gt;.Page:&lt;/pre&gt;
&lt;pre style="margin: 0px;"&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: blue;"&gt;return&lt;/span&gt; control.Page;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;PropertyTargetEnum&lt;/span&gt;.UserControl:&lt;/pre&gt;
&lt;pre style="margin: 0px;"&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: blue;"&gt;return&lt;/span&gt; FindParentUserControl(control);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: rgb(163, 21, 21);"&gt;"Invalid target type."&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;UserControl&lt;/span&gt; FindParentUserControl(&lt;span style="color: rgb(43, 145, 175);"&gt;Control&lt;/span&gt; control)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43, 145, 175);"&gt;Control&lt;/span&gt; parent = control.Parent;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (parent != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (parent &lt;span style="color: blue;"&gt;is&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;UserControl&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&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: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: rgb(43, 145, 175);"&gt;UserControl&lt;/span&gt;)parent;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt;&lt;/pre&gt;&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;

&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; parent = parent.Parent;&lt;/pre&gt;
&lt;/div&gt;


&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;.Format(&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(163, 21, 21);"&gt;"'{0}' is not inside a UserControl."&lt;/span&gt;, &lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; control.ID));&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Btw, there are two common workarounds if you don't like this implementation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store the value in a HiddenField and use a ControlParameter instead&lt;/li&gt;

&lt;li&gt;Add a Parameter control; implement the OnSelecting event of the DataSource to set the value on the InputParameters collection&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6878814" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/koenv/archive/tags/ASP.NET/default.aspx" /><category term="ObjectDataSource" scheme="http://weblogs.asp.net/koenv/archive/tags/ObjectDataSource/default.aspx" /><category term="code-behind" scheme="http://weblogs.asp.net/koenv/archive/tags/code-behind/default.aspx" /><category term="Data binding" scheme="http://weblogs.asp.net/koenv/archive/tags/Data+binding/default.aspx" /></entry><entry><title>Warning: Generation of designer file failed: The ... tag has already been registered.</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/12/02/warning-generation-of-designer-file-failed-the-tag-has-already-been-registered.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/12/02/warning-generation-of-designer-file-failed-the-tag-has-already-been-registered.aspx</id><published>2008-12-02T12:52:00Z</published><updated>2008-12-02T12:52:00Z</updated><content type="html">&lt;p&gt;Weird problem in ASP.NET again... With a weird solution:&lt;/p&gt;&lt;p&gt;In my apps I always have a folder UserControls where I put UserControls (not custom or server controls) that I use throughout the site. Examples are a date textbox with validation, formatted labels, upload fields, toggled image buttons, error message labels, etc. I register all these controls globally in the web.config pages section, like this:&lt;/p&gt;&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;pages&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;controls&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;add&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;tagPrefix&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;myapp&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;tagName&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;WebUserControl1&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;span style="color: red;"&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; src&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;~/UserControls/WebUserControl1.ascx&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;add&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;tagPrefix&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;myapp&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;tagName&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;WebUserControl2&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&lt;span style="color: red;"&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; src&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;~/UserControls/WebUserControl2.ascx&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;controls&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;pages&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;The problem is that some user controls also use another user control from that same folder, which leads to the following ASP.NET parser error:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Parser Error Message: &lt;/b&gt;The page '/UserControls/WebUserControl1.ascx' 
cannot use the user control '/UserControls/WebUserControl2.ascx', because it is 
registered in web.config and lives in the same directory as the page.&lt;/p&gt;&lt;p&gt;The solution for that is to add a @Register directive to WebUserControl1.ascx like this:&lt;br&gt;
&lt;/p&gt;&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="background: rgb(255, 238, 98) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue;"&gt;@&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;Register&lt;/span&gt; &lt;span style="color: red;"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue;"&gt;="myapp"&lt;/span&gt; &lt;span style="color: red;"&gt;TagName&lt;/span&gt;&lt;span style="color: blue;"&gt;="WebUserControl2"&lt;/span&gt; &lt;span style="color: red;"&gt;Src&lt;/span&gt;&lt;span style="color: blue;"&gt;="~/UserControls/WebUserControl2.ascx"&lt;/span&gt; &lt;span style="background: rgb(255, 238, 98) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;But now I get the error from the blog post title, so if I add new controls to the user control, the designer file is not updated and I cannot access these in code behind (unless I update the designer file manually - NOT).&lt;/p&gt;&lt;p&gt;The key to resolve is to either pick a different TagPrefix or TagName in the @Register directive and use it like that, e.g.: &lt;br&gt;&lt;/p&gt;&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="background: rgb(255, 238, 98) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue;"&gt;@&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;Register&lt;/span&gt; &lt;span style="color: red;"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue;"&gt;="myapp&lt;b&gt;&lt;u&gt;Local&lt;/u&gt;&lt;/b&gt;"&lt;/span&gt; &lt;span style="color: red;"&gt;TagName&lt;/span&gt;&lt;span style="color: blue;"&gt;="WebUserControl2"&lt;/span&gt; &lt;span style="color: red;"&gt;Src&lt;/span&gt;&lt;span style="color: blue;"&gt;="~/UserControls/WebUserControl2.ascx"&lt;/span&gt; &lt;span style="background: rgb(255, 238, 98) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;myapp&lt;u&gt;&lt;b&gt;Local&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;WebUserControl2&lt;/span&gt; &lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&lt;/span&gt; &lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;or&lt;/p&gt;&lt;div style="background: white none repeat scroll 0% 0%; font-family: Consolas; font-size: 10pt; color: black; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="background: rgb(255, 238, 98) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue;"&gt;@&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;Register&lt;/span&gt; &lt;span style="color: red;"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue;"&gt;="myapp"&lt;/span&gt; &lt;span style="color: red;"&gt;TagName&lt;/span&gt;&lt;span style="color: blue;"&gt;="WebUserControl2&lt;b&gt;&lt;u&gt;Local&lt;/u&gt;&lt;/b&gt;"&lt;/span&gt; &lt;span style="color: red;"&gt;Src&lt;/span&gt;&lt;span style="color: blue;"&gt;="~/UserControls/WebUserControl2.ascx"&lt;/span&gt; &lt;span style="background: rgb(255, 238, 98) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;myapp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;WebUserControl2&lt;b&gt;&lt;u&gt;Local&lt;/u&gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&lt;/span&gt; &lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Now the designer file keeps updating... &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6762679" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="asp.net usercontrol web.config" scheme="http://weblogs.asp.net/koenv/archive/tags/asp_2E00_net+usercontrol+web_2E00_config/default.aspx" /></entry><entry><title>Exceptional exception handling</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/10/08/exceptional-exception-handling.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/10/08/exceptional-exception-handling.aspx</id><published>2008-10-08T17:59:00Z</published><updated>2008-10-08T17:59:00Z</updated><content type="html">&lt;p&gt;My (much more productive) colleague &lt;a href="http://www.davybrion.com" title="The Inquisitive Coder" mce_href="http://www.davybrion.com"&gt;Davy&lt;/a&gt; beat me to post this problem we had today at work, so I'm gonna be lazy and &lt;a href="http://davybrion.com/blog/2008/10/exceptional-exception-handlingbehavior/" title="Exceptional exception handling" mce_href="http://davybrion.com/blog/2008/10/exceptional-exception-handlingbehavior/"&gt;link to him&lt;/a&gt; (and steal his title).&lt;br&gt;&lt;/p&gt;&lt;p&gt;Btw yesterday we applied &lt;a href="http://weblogs.asp.net/koenv/archive/2008/02/12/cs0426-the-type-name-web-does-not-exist-in-the-type-asp.aspx" mce_href="http://weblogs.asp.net/koenv/archive/2008/02/12/cs0426-the-type-name-web-does-not-exist-in-the-type-asp.aspx"&gt;this "solution"&lt;/a&gt; to one of our biggest projects and -hooray- it worked...&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6665853" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/koenv/archive/tags/C_2300_/default.aspx" /><category term="Debug" scheme="http://weblogs.asp.net/koenv/archive/tags/Debug/default.aspx" /><category term="Generics" scheme="http://weblogs.asp.net/koenv/archive/tags/Generics/default.aspx" /><category term="Exception" scheme="http://weblogs.asp.net/koenv/archive/tags/Exception/default.aspx" /><category term="Run" scheme="http://weblogs.asp.net/koenv/archive/tags/Run/default.aspx" /></entry><entry><title>LINQPad</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/03/17/linqpad.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/03/17/linqpad.aspx</id><published>2008-03-17T11:32:00Z</published><updated>2008-03-17T11:32:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;&lt;A href="http://www.albahari.com/"&gt;Joseph Albahari&lt;/A&gt;&amp;nbsp;created this great tool to&amp;nbsp;execute&amp;nbsp;LINQ (but also SQL)&amp;nbsp;queries and review the results. In&amp;nbsp;case of LINQ you also get to see the&amp;nbsp;corresponding compiler translation&amp;nbsp;and SQL query.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Some pro's:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Great for testing LINQ without having to build and debug your entire application in Visual Studio...&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;No installation (just exe)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Self updating&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;You can choose between C# and VB&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Includes query organizer&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;...&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;A class="" href="http://www.linqpad.net/linqpadscreen.png" target=_blank mce_href="http://www.linqpad.net/linqpadscreen.png"&gt;&lt;IMG style="WIDTH: 450px" title=LINQPad border=0 alt=LINQPad src="http://www.linqpad.net/linqpadscreen.png" width=450 mce_src="http://www.linqpad.net/linqpadscreen.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Get it here: &lt;A href="http://www.linqpad.net/"&gt;www.linqpad.net&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;PS: Also take the LINQ quiz here: &lt;A href="http://www.albahari.com/nutshell/linqquiz.html"&gt;www.albahari.com/nutshell/linqquiz.html&lt;/A&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5986559" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="SQL" scheme="http://weblogs.asp.net/koenv/archive/tags/SQL/default.aspx" /><category term="LINQ" scheme="http://weblogs.asp.net/koenv/archive/tags/LINQ/default.aspx" /></entry><entry><title>Quick Attach and Detach Debugger</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/02/14/quick-attach-and-detach-debugger.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/02/14/quick-attach-and-detach-debugger.aspx</id><published>2008-02-14T09:13:00Z</published><updated>2008-02-14T09:13:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;&lt;A href="http://weblogs.asp.net/blogs/koenv/keyboard_attachdebugger.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here's a trick I often use in Visual Studio to speed up the trial-and-error process. &lt;/P&gt;
&lt;P mce_keep="true"&gt;A disadvantage of using an ASP.NET Web Application Project instead of an ASP.NET Web Site is that you cannot edit code behind files (or basically any code file in your web project) while you are debugging. So to edit just minor things there, you need to stop the debugger (which closes the browser typically), edit, compile and start the debugger again, which could take some time.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I have written (recorded and adjusted) a small VS macro that attaches the debugger for me. It will actually look if the VS built-in webserver is active. If not it will attach to IIS.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt; AttachDebugger()&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Try&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; dbg2 &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; EnvDTE80.Debugger2 = DTE.Debugger&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; trans &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; EnvDTE80.Transport = dbg2.Transports.Item(&lt;SPAN style="COLOR: #a31515"&gt;"Default"&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; dbgeng(1) &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; EnvDTE80.Engine&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbgeng(0) = trans.Engines.Item(&lt;SPAN style="COLOR: #a31515"&gt;"Managed"&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim&lt;/SPAN&gt; proc2 &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; EnvDTE80.Process2&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Try&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;proc2 = dbg2.GetProcesses(trans, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;).Item(&lt;SPAN style="COLOR: #a31515"&gt;"WebDev.WebServer.EXE"&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch&lt;/SPAN&gt; ex &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; Exception&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;proc2 = dbg2.GetProcesses(trans, &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;).Item(&lt;SPAN style="COLOR: #a31515"&gt;"w3wp.exe"&lt;/SPAN&gt;)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Try&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;proc2.Attach2(dbgeng)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Catch&lt;/SPAN&gt; ex &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; System.Exception&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MsgBox(ex.Message)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Try&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&lt;!--EndFragment--&gt;Copy this in one of your Macro modules and it should compile.&amp;nbsp;The script could be a bit different on Windows XP, because the ASP.NET process is called "aspnet_wp" there...&lt;/P&gt;
&lt;P mce_keep="true"&gt;And then assign shortcuts to your macro. For detaching you don't need a macro, it's a built-in command. My shortcut's are Ctrl+Shift+A for attaching and Ctrl+Shift+D for detaching.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://weblogs.asp.net/blogs/koenv/keyboard_attachdebugger.GIF" mce_href="http://weblogs.asp.net/blogs/koenv/keyboard_attachdebugger.GIF"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://weblogs.asp.net/blogs/koenv/keyboard_attachdebugger.JPG"&gt;&lt;IMG style="WIDTH: 400px" src="http://weblogs.asp.net/blogs/koenv/keyboard_attachdebugger.JPG" width=400 border=0 mce_src="http://weblogs.asp.net/blogs/koenv/keyboard_attachdebugger.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Now you can detach your debugger (leaving the browser open), edit the code, build it (only build what you changed), attach and refresh the browser...&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5783818" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="Visual Studio" scheme="http://weblogs.asp.net/koenv/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Checkboxes in Windows Explorer</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/02/13/checkboxes-in-windows-explorer.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/02/13/checkboxes-in-windows-explorer.aspx</id><published>2008-02-13T20:38:00Z</published><updated>2008-02-13T20:38:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;Here's a Vista feature some people have asked me about, the mysterious checkboxes... (Total Commander users: continue reading at your own risk :o)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://weblogs.asp.net/blogs/koenv/checkboxes.JPG" mce_href="http://weblogs.asp.net/blogs/koenv/checkboxes.JPG"&gt;&lt;IMG title="Details view with checkboxes" alt="Details view with checkboxes" src="http://weblogs.asp.net/blogs/koenv/checkboxes.JPG" align=top border=1 mce_src="http://weblogs.asp.net/blogs/koenv/checkboxes.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://weblogs.asp.net/blogs/koenv/checkboxes2.JPG"&gt;&lt;IMG title="Medium icon view with check boxes" alt="Medium icon view with check boxes" src="http://weblogs.asp.net/blogs/koenv/checkboxes2.JPG" border=1 mce_src="http://weblogs.asp.net/blogs/koenv/checkboxes2.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;STRONG&gt;How does it work?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The checkboxes appear when you have selected a file/folder or when you hover it&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;When you click on the file/folder name or icon, the selection changes to that file/folder (clearing the previous selection)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;When you click the checkbox, the file/folder is added to the current selection (without holding Ctrl or Shift)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Works in any view mode (details, list, icons, thumbnails,...) although I haven't seen it in the command prompt...&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Where to get it?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Go to the Folder Options (can't think of the easiest way to get there but you should have it by now)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Go to the View tab&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Scroll to the bottom&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Check this one: &lt;EM&gt;Use check boxes to select items&lt;/EM&gt;&lt;BR&gt;&lt;A href="http://weblogs.asp.net/blogs/koenv/folderoptions.JPG"&gt;&lt;IMG title="Folder options &gt; View tab" alt="Folder options &gt; View tab" hspace=5 src="http://weblogs.asp.net/blogs/koenv/folderoptions.JPG" align=top vspace=5 border=0 mce_src="http://weblogs.asp.net/blogs/koenv/folderoptions.JPG"&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Now you'll never have to drop your sandwich again to hold the shift key!&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5780817" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author></entry><entry><title>CS0426: The type name 'Web' does not exist in the type 'ASP....</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/02/12/cs0426-the-type-name-web-does-not-exist-in-the-type-asp.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/02/12/cs0426-the-type-name-web-does-not-exist-in-the-type-asp.aspx</id><published>2008-02-12T17:03:00Z</published><updated>2008-02-12T17:03:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;I've been having this problem with ASP.NET themes that block my web applications from working. I always get this error when opening any page: &lt;EM&gt;CS0426: The type name 'Web' does not exist in the type 'ASP.Foo'&lt;/EM&gt;. &lt;/P&gt;
&lt;P mce_keep="true"&gt;When&amp;nbsp;I set the default language to vb (web.config &amp;gt; compilation tag), the exception message is even more cryptic: &lt;EM&gt;BC30002: Type 'Foo.Web.WebControls.MyWebControl' is not defined.&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The problem was that I always use the following project setup:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;STRONG&gt;Foo.Web:&lt;/STRONG&gt; class library project containing web controls, base master pages, base pages, base user controls,...&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;STRONG&gt;Foo.WebApplication:&lt;/STRONG&gt; web application project that references Foo.Web. I also register the controls globally in web.config (&lt;SPAN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;pages&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;controls&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;add&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;tagPrefix&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;foo&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;assembly&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Foo.Web&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Foo.Web.WebControls&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;...&lt;/SPAN&gt;) but the problem is also there if you register your controls locally.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Then in Foo.WebApplication I have defined a theme named "Foo" (in the &lt;STRONG&gt;App_Themes&lt;/STRONG&gt; folder). I&amp;nbsp;configure this theme globally in web.config (&lt;SPAN style="FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;pages&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;styleSheetTheme&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;Foo&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;) but that shouldn't matter where it is configured.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;In that theme I have a &lt;STRONG&gt;skin file&lt;/STRONG&gt; (or several) that style one of my web controls from the Foo.Web project.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;The problem is that at runtime the theme Foo is compiled in a namespace ASP.Foo, and then it will look for the namespaces Web.WebControls below that one, which isn't what I want. The only solution that I found is renaming the theme to something different, e.g. FooStyle.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I'm not sure whether this problem can also occur if you have an ASP.NET&amp;nbsp;website, but I guess &lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5769754" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/koenv/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>Operator overloading and testing for null</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/01/25/overloading-operator-and-testing-for-null.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/01/25/overloading-operator-and-testing-for-null.aspx</id><published>2008-01-24T23:54:00Z</published><updated>2008-01-24T23:54:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;Operator overloading in C# is basically writing a public static method, like this:&lt;/P&gt;
&lt;P style="BORDER-RIGHT: silver 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: silver 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: silver 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: silver 1px solid" mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;operator&lt;/SPAN&gt; ==(&lt;SPAN style="COLOR: #2b91af"&gt;CustomObject&lt;/SPAN&gt; object1, &lt;SPAN style="COLOR: #2b91af"&gt;CustomObject&lt;/SPAN&gt; object2)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; object1.SomeProperty == object2.SomeProperty; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Before you do this, it is necessary to check if both parameters are not null, otherwise you will get a NullReferenceException when doing this:&lt;/P&gt;
&lt;P style="BORDER-RIGHT: silver 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: silver 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: silver 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: silver 1px solid" mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'"&gt;CustomObject&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt; object1 = GetCustomObject(); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt; (object1 == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;But you cannot do the following because it will simply recurse the evaluation to the same method, and give you a StackOverflowException:&lt;/P&gt;
&lt;P style="BORDER-RIGHT: silver 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: silver 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: silver 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: silver 1px solid" mce_keep="true"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;public&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;operator&lt;/SPAN&gt; ==(&lt;SPAN style="COLOR: #2b91af"&gt;CustomObject&lt;/SPAN&gt; object1, &lt;SPAN style="COLOR: #2b91af"&gt;CustomObject&lt;/SPAN&gt; object2)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (object1 == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; || object2 == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//...&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;P mce_keep="true"&gt;Instead you can cast your parameters to "object"s before evaluating, which will use the == operator for Object:&lt;/P&gt;
&lt;P style="BORDER-RIGHT: silver 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: silver 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: silver 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: silver 1px solid" mce_keep="true"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;if&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;FONT color=#000000&gt; ((&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)object1 == &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;&lt;FONT color=#000000&gt; || (&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)object2 == &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Also, if you don't want to repeat the whole bunch again for the != operator, you can simply write this:&lt;/P&gt;
&lt;P style="BORDER-RIGHT: silver 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: silver 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: silver 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: silver 1px solid" mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: NL-BE; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;public&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;operator&lt;/SPAN&gt; !=(&lt;SPAN style="COLOR: #2b91af"&gt;CustomObject&lt;/SPAN&gt; object1, &lt;SPAN style="COLOR: #2b91af"&gt;CustomObject&lt;/SPAN&gt; object2)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; !(object1 == object2);&lt;BR&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5646748" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="C#" scheme="http://weblogs.asp.net/koenv/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Kick-off post</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/koenv/archive/2008/01/25/kick-off-post.aspx" /><id>http://weblogs.asp.net/koenv/archive/2008/01/25/kick-off-post.aspx</id><published>2008-01-24T23:26:00Z</published><updated>2008-01-24T23:26:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;I've been having this idea about a blog for a while now. Basically because I often run into a problem that I had before but then it's still hard to figure out how I fixed it back then. Now this will be my little public howto-database.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I'll try to post several bits a week about various topics of software development,&amp;nbsp;but&amp;nbsp;mainly&amp;nbsp;about web development, ASP.NET, scripting,...&lt;/P&gt;
&lt;P mce_keep="true"&gt;Thanks to &lt;A class="" href="http://www.joeon.net/" mce_href="http://www.joeon.net/"&gt;Joe&lt;/A&gt; and the rest of the &lt;A href="http://www.asp.net/"&gt;www.asp.net&lt;/A&gt; team for opening up some space for us...&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5646633" width="1" height="1"&gt;</content><author><name>koevoeter</name><uri>http://weblogs.asp.net/members/koevoeter.aspx</uri></author><category term="General" scheme="http://weblogs.asp.net/koenv/archive/tags/General/default.aspx" /></entry></feed>
