<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.artembg.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Velio's Blog</title><link>http://community.artembg.com/blogs/velio/default.aspx</link><description>This is the blog of Velio Ivanov.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>XML Providers 4.0beta under Tiny Providers released</title><link>http://community.artembg.com/blogs/velio/archive/2011/01/13/xml-providers-4-0beta-under-tiny-providers-released.aspx</link><pubDate>Thu, 13 Jan 2011 21:37:52 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:200</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=200</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2011/01/13/xml-providers-4-0beta-under-tiny-providers-released.aspx#comments</comments><description>&lt;p&gt;Today I released &lt;a href="http://tinyproviders.codeplex.com/releases/view/52967" target="_blank"&gt;XML Providers 4.0beta&lt;/a&gt; under &lt;a href="http://tinyproviders.codeplex.com/" target="_blank"&gt;Tiny Membership Providers&lt;/a&gt; project.&lt;/p&gt;  &lt;p&gt;Custom ASP.NET XML membership providers targeting .NET 4.0   &lt;br /&gt;The implementation ASP.NET XML membership providers targeting .NET 2.0 could be found at &lt;a href="http://aspnetxmlproviders.codeplex.com/"&gt;ASP.NET XmlProviders&lt;/a&gt;    &lt;br /&gt;I start with version 4.0 by purpose.     &lt;br /&gt;The versions bellow 4.0 are kept for future releases of .NET 2.0 implementation of ASP.NET XML membership providers.&lt;/p&gt;  &lt;p&gt;For how to use samples, please, check out the SampleWebSite under downloads.   &lt;br /&gt;Some more samples and screencast will be provided as possible.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=200" width="1" height="1"&gt;</description></item><item><title>Announcing my public source repositories</title><link>http://community.artembg.com/blogs/velio/archive/2011/01/06/announcing-my-public-source-repositories.aspx</link><pubDate>Thu, 06 Jan 2011 09:32:30 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:199</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=199</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2011/01/06/announcing-my-public-source-repositories.aspx#comments</comments><description>&lt;p&gt;I’m glad to announce my new public Mercurial source code repositories. You can find them &lt;a href="https://source.artembg.com/" target="_blank"&gt;here&lt;/a&gt;.    &lt;br /&gt;The idea behind this is to give you a nice way to browse my public source code and samples.    &lt;br /&gt;So, keep an eye on it &lt;img style="border-bottom-style:none;border-right-style:none;border-top-style:none;border-left-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/wlEmoticon_2D00_winkingsmile_5F00_64EAD41C.png" /&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=199" width="1" height="1"&gt;</description></item><item><title>Annoying VS 2010 IntelliSense markup problem - after some recent updates</title><link>http://community.artembg.com/blogs/velio/archive/2010/10/20/annoying-vs-2010-intellisense-markup-problem-after-some-recent-updates.aspx</link><pubDate>Wed, 20 Oct 2010 08:09:13 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:198</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=198</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/10/20/annoying-vs-2010-intellisense-markup-problem-after-some-recent-updates.aspx#comments</comments><description>&lt;p&gt;Honestly I have no idea exactly when and which of the recent updates is causing the problem, but at one point I noticed that VS2010 IntelliSense marked tags on standard web controls as unknown.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="VS2010-markup1" border="0" alt="VS2010-markup1" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/VS2010markup1_5F00_1BDF5777.png" width="643" height="546" /&gt; &lt;/p&gt;  &lt;p&gt;Further more: The IntelliSense stopped to support the standard asp: tags.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/VS2010markup2_5F00_19392C77.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="VS2010-markup2" border="0" alt="VS2010-markup2" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/VS2010markup2_5F00_thumb_5F00_3B90C1F0.png" width="504" height="395" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can imagine, this was really annoying problem for me.    &lt;br /&gt;So, I dig around half an hour and found a solution to the problem.    &lt;br /&gt;Seems to me like something in the signature of the System.Web.Extensions assembly was changed.    &lt;br /&gt;In order to fix the markup IntelliSense I had to remove the details assembly reference info in the Web.config, where the asp tags’ prefix is defined for web extensions.    &lt;br /&gt;Here is how it looks before the change:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/Capture_5F00_5B3F9BB8.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Capture" border="0" alt="Capture" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/Capture_5F00_thumb_5F00_4FA9DE79.png" width="644" height="201" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;And here is after the change:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/Capture1_5F00_4414213A.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Capture1" border="0" alt="Capture1" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/Capture1_5F00_thumb_5F00_517A3440.png" width="644" height="213" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Now, I have back my good pal IntelliSense on markup:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/Capture2_5F00_21BF1C72.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Capture2" border="0" alt="Capture2" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/Capture2_5F00_thumb_5F00_16295F33.png" width="644" height="313" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Hope this could helps to anyone experiencing same problem.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=198" width="1" height="1"&gt;</description></item><item><title>Extension Methods: HtmlTextWriter part 1 - RenderTag</title><link>http://community.artembg.com/blogs/velio/archive/2010/08/17/extension-methods-htmltextwriter-part-1-rendertag.aspx</link><pubDate>Tue, 17 Aug 2010 06:51:36 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:197</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=197</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/08/17/extension-methods-htmltextwriter-part-1-rendertag.aspx#comments</comments><description>&lt;p&gt;So, for me case is clear guys: &lt;strong&gt;&lt;em&gt;“Static helper methods are dead, long live the Extension Methods.”        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Since extension methods were out, I become a big fan of them.     &lt;br /&gt;For example, instead of:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;StringHelper.Encode(“Some secret”);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;it looks much more nice and natural to me:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;”Some secret”.Encode();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I have implemented and I’m using tons of extension methods so far and I decided to start a category in my blog where to share some of them with you guys. 
  &lt;br /&gt;Hope all those methods to be useful to you too, as they are to me.&lt;/p&gt;

&lt;p&gt;First of the series will be a couple of extension methods to HtmlTextWriter. 
  &lt;br /&gt;You know, as a web and especially web controls developer, I use it much and that’s why I like extending it.&lt;/p&gt;

&lt;p&gt;During my development I found a lot of lines where I just render and open tag and then immediately the closing (end) tag is rendered, like:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.AddAttribute(HtmlTextWriterAttribute.Id, fieldName + &lt;span style="color:#006080;"&gt;&amp;quot;_Error&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.AddAttribute(HtmlTextWriterAttribute.Class, &lt;span style="color:#006080;"&gt;&amp;quot;field-validation-error&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.RenderBeginTag(HtmlTextWriterTag.Span);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.RenderEndTag();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The other case I often found myself using is: open tag, write some content text and closing the tag, like:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.RenderBeginTag(HtmlTextWriterTag.Span);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.Write(&lt;span style="color:#006080;"&gt;&amp;quot;allow editing&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.RenderEndTag();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I have developed some snippets for Visual Studio, which you could find at my website, in order to speed up typing such a kind of code bocks, but at some point I said to myself: why not merge those lines in a single methods. Of course, in a single extension method &lt;img alt="smile_teeth" src="http://spaces.live.com/rte/emoticons/smile_teeth.gif" /&gt;.&lt;/p&gt;

&lt;p&gt;Here are the simple extension methods I came with:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;height:252px;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// Renders the tag.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;The writer.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;tag&amp;quot;&amp;gt;The tag.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RenderTag(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; HtmlTextWriter writer, HtmlTextWriterTag tag) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderBeginTag(tag);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderEndTag();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// Renders the tag.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;The writer.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;tag&amp;quot;&amp;gt;The tag.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RenderTag(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; HtmlTextWriter writer, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; tag) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderBeginTag(tag);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderEndTag();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// Renders the tag.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;The writer.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;tag&amp;quot;&amp;gt;The tag.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;content&amp;quot;&amp;gt;The content.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RenderTag(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; HtmlTextWriter writer, HtmlTextWriterTag tag, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; content) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderBeginTag(tag);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.Write(content);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderEndTag();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// Renders the tag.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;The writer.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;tag&amp;quot;&amp;gt;The tag.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;content&amp;quot;&amp;gt;The content.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RenderTag(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; HtmlTextWriter writer, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; tag, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; content) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderBeginTag(tag);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.Write(content);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    writer.RenderEndTag();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now using those extension methods the sample lines of code above will become:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.AddAttribute(HtmlTextWriterAttribute.Id, fieldName + &lt;span style="color:#006080;"&gt;&amp;quot;_Error&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.AddAttribute(HtmlTextWriterAttribute.Class, &lt;span style="color:#006080;"&gt;&amp;quot;field-validation-error&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.RenderTag(HtmlTextWriterTag.Span);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;writer.RenderTag(HtmlTextWriterTag.Span, &lt;span style="color:#006080;"&gt;&amp;quot;allow editing&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;br /&gt;Hope this helps.&lt;/p&gt;

&lt;p&gt;Regards, 
  &lt;br /&gt;Velio&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=197" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/Extension+Methods/default.aspx">Extension Methods</category></item><item><title>Google Geocoder 1.0</title><link>http://community.artembg.com/blogs/velio/archive/2010/08/01/google-geocoder-1-0.aspx</link><pubDate>Sun, 01 Aug 2010 14:45:04 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:196</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=196</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/08/01/google-geocoder-1-0.aspx#comments</comments><description>&lt;p&gt;Google Geocoding Web Service via HTTP .NET client implemented in request(GeoRequest)-response(GeoResponse) fashion.&lt;/p&gt;  &lt;h6&gt;Installation &amp;amp; Usage&lt;/h6&gt; In order to use the GoogleGecoding you have to:   &lt;ol&gt;   &lt;li&gt;add reference to Artem.GoogleGeocoding&lt;/li&gt;    &lt;li&gt;add using statement for Artem.Google.Net namespace.&lt;/li&gt; &lt;/ol&gt;  &lt;h6&gt;Features&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;Support standard and reverse geocoding;&lt;/li&gt; &lt;/ul&gt;  &lt;h6&gt;Samples&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;Geocoding Request&lt;/li&gt; &lt;/ul&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;GeoRequest request = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GeoRequest(&lt;span style="color:#006080;"&gt;&amp;quot;plovdiv bulgaria&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;GeoResponse response = request.GetResponse();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;GeoLocation location = response.Results[0].Geometry.Location;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; latitude = location.Latitude;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; longitude = location.Longitude;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;// TODO use latitude/longitude values&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Reverse Geocoding Request&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;GeoRequest request = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GeoRequest(42.1438409, 24.7495615);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;GeoResponse response = request.GetResponse();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; address = response.Results[0].FormattedAddress;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;// TODO use address values&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=196" width="1" height="1"&gt;</description></item><item><title>VisualStudion 2010 Javascript Outlining 1.2</title><link>http://community.artembg.com/blogs/velio/archive/2010/07/29/visualstudion-2010-javascript-outlining-1-2.aspx</link><pubDate>Thu, 29 Jul 2010 16:11:38 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:195</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=195</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/07/29/visualstudion-2010-javascript-outlining-1-2.aspx#comments</comments><description>&lt;p&gt;A support for CSS content type was added in order to use outlining in CSS files, as well.&lt;/p&gt;  &lt;h5&gt;Features&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Outlines CSS codeblock regions for the code placed between { }. The closing brace is places on a new line and there is not another opeing brace on same line. &lt;/li&gt;    &lt;li&gt;Outlines custom regions defined by:      &lt;ul&gt;       &lt;li&gt;/&lt;b&gt;#region&lt;/b&gt;/ - /&lt;b&gt;#endregion&lt;/b&gt;/ &lt;/li&gt;        &lt;li&gt;/&lt;b&gt;#&amp;gt;&lt;/b&gt;/ - /&lt;b&gt;#&amp;lt;&lt;/b&gt;/&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Samples&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;code block&lt;/li&gt; &lt;/ul&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;body&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;background-color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#AAA;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-family&lt;/span&gt;: &lt;span style="color:#006080;"&gt;Verdana;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-size&lt;/span&gt;: &lt;span style="color:#006080;"&gt;11px;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;long custom region definition&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/*#region Test */&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;body&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;background-color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#AAA;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-family&lt;/span&gt;: &lt;span style="color:#006080;"&gt;Verdana;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-size&lt;/span&gt;: &lt;span style="color:#006080;"&gt;11px;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;h1&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;h2&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;h3&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;h4&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#5377A9;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-family&lt;/span&gt;: &lt;span style="color:#006080;"&gt;Tahoma;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/*#endregion*/&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;short custom region definition&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/*#&amp;gt; Test */&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;body&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;background-color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#AAA;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-family&lt;/span&gt;: &lt;span style="color:#006080;"&gt;Verdana;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-size&lt;/span&gt;: &lt;span style="color:#006080;"&gt;11px;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;h1&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;h2&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;h3&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;h4&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;color&lt;/span&gt;: &lt;span style="color:#006080;"&gt;#5377A9;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;font-family&lt;/span&gt;: &lt;span style="color:#006080;"&gt;Tahoma;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#008000;"&gt;/*#&amp;lt;*/&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=195" width="1" height="1"&gt;</description></item><item><title>VisualStudion 2010 Javascript Outlining 1.0</title><link>http://community.artembg.com/blogs/velio/archive/2010/06/05/visualstudion-2010-javascript-outlining-1-0.aspx</link><pubDate>Fri, 04 Jun 2010 23:06:00 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:194</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=194</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/06/05/visualstudion-2010-javascript-outlining-1-0.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As a Web 2 developer I found myself dealing with fast growing JavaScript code files.   &lt;br /&gt;And I really missed the code regions in Visual Studio, which is a nice way to organize the code blocks and focus on reasonable small amount of code.    &lt;br /&gt;There are some macros available out on the web for placing a regions outlining in JavaScript code editor.    &lt;br /&gt;I was not fully satisfied with macros and the fact I have to manually run them (even with a shortcut keys) every time I open the JavaScript file.    &lt;br /&gt;Thus, I have spend some amount of my time and came out with a Visual Studio 2010 Editor Extension for JavaScript Oulining.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Even, if this first version is simple as functionality it gave me much better JavaScript code experience.    &lt;br /&gt;So, I decided to share it with you guys and hope it helps you too.&lt;/p&gt;  &lt;p&gt;Please, find the visual studio package &lt;a href="http://googlemap.codeplex.com/releases/view/46542" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Enjoy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=194" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://community.artembg.com/blogs/velio/archive/tags/VisualStudio/default.aspx">VisualStudio</category></item><item><title>“Fixing” Visual Studio 2010 HTML snippets</title><link>http://community.artembg.com/blogs/velio/archive/2010/04/21/fixing-visual-studio-2010-html-snippets.aspx</link><pubDate>Wed, 21 Apr 2010 13:41:54 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:193</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=193</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/04/21/fixing-visual-studio-2010-html-snippets.aspx#comments</comments><description>&lt;p&gt;Visual Studio 2010 is out now.    &lt;br /&gt;It is great the new Visual Studio 2010 allow usage of code snippets widely now.     &lt;br /&gt;Apart of that, the cursor is goes at wrong place after inserting some of the HTML snippets, which breaks the nice continuous typing experience&lt;/p&gt;  &lt;p&gt;Have same problem like me?    &lt;br /&gt;Do you know you can edit and &amp;quot;fix&amp;quot; them.&lt;/p&gt;  &lt;p&gt;Check out &lt;a href="http://artembg.com/video/FixingHtmlSnippets" target="_blank"&gt;this&lt;/a&gt; short video, where I for example change the standard textbox snippet&lt;/p&gt;  &lt;p&gt;Hope this helps,    &lt;br /&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=193" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/VisualStudio/default.aspx">VisualStudio</category></item><item><title>Seeems.Framework+Seeems.CMS</title><link>http://community.artembg.com/blogs/velio/archive/2010/02/16/seeems-framework-seeems-cms.aspx</link><pubDate>Tue, 16 Feb 2010 08:44:47 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:192</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=192</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2010/02/16/seeems-framework-seeems-cms.aspx#comments</comments><description>&lt;p&gt;A banch of wesbites are running under Seeems.Framework+Seeems.CMS now :).   &lt;br /&gt;&lt;a href="http://delpin.dk/"&gt;http://delpin.dk/&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://co-sea.dk/"&gt;http://co-sea.dk/&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://kools.dk/"&gt;http://kools.dk/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=192" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/Seeems/default.aspx">Seeems</category></item><item><title>GoogleMap Control using MarkerManager video</title><link>http://community.artembg.com/blogs/velio/archive/2009/11/25/googlemap-control-using-markermanager-video.aspx</link><pubDate>Wed, 25 Nov 2009 07:53:54 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:190</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=190</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2009/11/25/googlemap-control-using-markermanager-video.aspx#comments</comments><description>&lt;p&gt;Hi, I have published a new short “HowTo” video about how to use MarkerManager with GoogleMap Control 4.1.   &lt;br /&gt;Check it out &lt;a href="http://artembg.com/video/GoogleMapControl-MarkerManager" target="_blank"&gt;here&lt;/a&gt;.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The background music is a track of the new upcoming album of my friend Svetlin Staykov – Slow Project.   &lt;br /&gt;I hope you enjoy both, video and music. &lt;img alt="smile_teeth" src="http://spaces.live.com/rte/emoticons/smile_teeth.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=190" width="1" height="1"&gt;</description></item><item><title>GoogleMap Control 4.1 beta released</title><link>http://community.artembg.com/blogs/velio/archive/2009/11/24/googlemap-control-4-1-beta-released.aspx</link><pubDate>Tue, 24 Nov 2009 09:30:07 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:189</guid><dc:creator>velio</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=189</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2009/11/24/googlemap-control-4-1-beta-released.aspx#comments</comments><description>&lt;p&gt;I just released GoogleMap Control 4.1 beta.   &lt;br /&gt;Get it from &lt;a href="http://googlemap.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35111" target="_blank"&gt;codeplex&lt;/a&gt;, and give it a try.&lt;/p&gt;  &lt;h5&gt;Release Notes&lt;/h5&gt;  &lt;p&gt;In this release were fixed some important issues like: large number of markers using geocoding, zoom end event cycling etc.    &lt;br /&gt;Some new features were implemented as well, check out the list below.    &lt;br /&gt;I would like to highlight the proper implementation of Marker Manager coming in this release.    &lt;br /&gt;Check out the list of changes connected with that feature below.&lt;/p&gt;  &lt;h5&gt;Issues&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Large number of markers using geocoding      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=7986"&gt;Issue with creating large number of Markers&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=7453"&gt;Subsequent markers don&amp;#39;t show after unsuccessful geocode&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=7870"&gt;Random missing markers when using address property and adding more than 10?&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;ZoomEnd event subscribing problems      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=8037"&gt;OnZoomEnd issue&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Features&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;MarkerManager&lt;/b&gt; - MarkerManager is used to manage visibility of hundreds of markers on a map, based on the map&amp;#39;s current viewport and zoom level.       &lt;ul&gt;       &lt;li&gt;The GoogleMaps API GMarkerManager class is deprecated and I have used the recommended &lt;a href="http://code.google.com/p/gmaps-utility-library-dev/"&gt;open sourced MarkerManager&lt;/a&gt; instead. &lt;/li&gt;        &lt;li&gt;I have added a new inner property MarkerManagerOptions in order to manager the options for the marker manager. &lt;/li&gt;        &lt;li&gt;GoogleMarker class was changed and couple of new properties were added to it to: MaxZoom and MinZoom. &lt;/li&gt;        &lt;li&gt;A sample page was added to Samples Website under &lt;b&gt;/marker/MarkerManager.aspx&lt;/b&gt;. Check the sample page online &lt;a href="http://googlemap.artembg.com/marker/MarkerManager.aspx"&gt;here&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Check out the short demo video (coming soon)&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Map&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=7761"&gt;Enterprise / Premier support&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Directions&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=7918"&gt;Add &amp;#39;preserveViewport&amp;#39; functionality&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Polygon&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://googlemap.codeplex.com/WorkItem/View.aspx?WorkItemId=9087"&gt;Polygon EnableDrawing &amp;amp; EnableEditing&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Changes&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;The Anonymous JS classes&amp;#39; functions were changed to Pseudo-Named functions for better JS debug and error feedback experience. &lt;/li&gt;    &lt;li&gt;Samples Websites for .NET 2.0 and VB were removed - Sorry, guys, I just have no enough time to support and keep them up to date.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=189" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/GoogleMap+Control/default.aspx">GoogleMap Control</category><category domain="http://community.artembg.com/blogs/velio/archive/tags/JavaScript/default.aspx">JavaScript</category></item><item><title>GoogleMap Control JS with Pseudo-Named functions now</title><link>http://community.artembg.com/blogs/velio/archive/2009/11/22/googlemap-control-js-with-pseudo-named-functions-now.aspx</link><pubDate>Sun, 22 Nov 2009 18:59:56 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:188</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=188</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2009/11/22/googlemap-control-js-with-pseudo-named-functions-now.aspx#comments</comments><description>&lt;p&gt;I’m working recently on next release of GoogleMap Control v4.1.    &lt;br /&gt;As I have mentioned - I’m switching from anonymous to pseudo-named JS function for that release.     &lt;br /&gt;All the effort made, was for a better JS debug and error feedback experience.&lt;/p&gt;  &lt;p&gt;At least, that’s the theory.    &lt;br /&gt;However, today I did some work on the control again and had a chance in practice to prove I was right.     &lt;br /&gt;I got some JS error during&amp;#160; my work, but the information I have now in the call stack is much more useful than just a list of anonymous function.&lt;/p&gt;  &lt;p&gt;Here is a simple example of what I mean:&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/pseudonamed_5F00_57157A64.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="pseudo-named" border="0" alt="pseudo-named" src="http://community.artembg.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/velio/pseudonamed_5F00_thumb_5F00_4DBC45E1.gif" width="644" height="263" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this particular case, I just mismatch the functions’ bodies &lt;img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif" /&gt;, but you get the idea, right.&lt;/p&gt;  &lt;p&gt;Regards &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=188" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/GoogleMap+Control/default.aspx">GoogleMap Control</category><category domain="http://community.artembg.com/blogs/velio/archive/tags/JavaScript/default.aspx">JavaScript</category></item><item><title>Generic extension method for a safe item value fetch from HttpSessionState.</title><link>http://community.artembg.com/blogs/velio/archive/2009/10/09/generic-extension-method-for-a-safe-item-value-fetch-from-httpsessionstate.aspx</link><pubDate>Fri, 09 Oct 2009 06:46:59 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:177</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=177</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2009/10/09/generic-extension-method-for-a-safe-item-value-fetch-from-httpsessionstate.aspx#comments</comments><description>&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b0c8d77e-d5bb-4e83-b8d8-1d9a12ccf64f" class="wlWriterEditableSmartContent"&gt;del.icio.us Tags: &lt;a href="http://del.icio.us/popular/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/C%23" rel="tag"&gt;C#&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;Hi there,&lt;/p&gt;  &lt;p&gt;Here is an extension method for getting a value from the session in a safe manner.&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryGet&amp;lt;T&amp;gt;(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; HttpSessionState session, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; key, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; T &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; flag = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt; = &lt;span style="color:#0000ff;"&gt;default&lt;/span&gt;(T);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (session != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; objectValue = session[key];&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (flag = (objectValue != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; objectValue &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; T)) &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt; = (T)objectValue;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; flag;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
The usage is simple like: 

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; flag;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Page.Session.TryGet&amp;lt;&lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt;&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;MyFlag&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; flag)) {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;// TODO value exists and can be used&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=177" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/Programming/default.aspx">Programming</category><category domain="http://community.artembg.com/blogs/velio/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://community.artembg.com/blogs/velio/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>GoogleMap Control 4.0 released</title><link>http://community.artembg.com/blogs/velio/archive/2009/04/29/googlemap-control-4-0-released.aspx</link><pubDate>Wed, 29 Apr 2009 15:49:51 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:54</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=54</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2009/04/29/googlemap-control-4-0-released.aspx#comments</comments><description>&lt;p&gt;This release comes with a lot of new features like: StreetView; Reverse Geocoding; better AddressNotFound support; MarkerStyle for general way to manage the “Look&amp;amp;Feel” of markers; markers InfoWindow extensions and improvements; extended event handling; improved disposing and persistence; etc.&lt;/p&gt;  &lt;h5&gt;New Features&lt;/h5&gt; (For a full list check out GoogleMap Control 4.0 beta as well)   &lt;ul&gt;   &lt;li&gt;&lt;u&gt;&lt;b&gt;MarkerStyle&lt;/b&gt; inner property of GoogleMap control is now available to master in more general way the &amp;quot;Look&amp;amp;Feel&amp;quot; of all the markers.&lt;/u&gt;       &lt;ul&gt;       &lt;li&gt;It will for example simplify the way to set custom icon to all the markers in one place. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;b&gt;InfoContent&lt;/b&gt; now provides a default implementation of container control for marker&amp;#39;s info window content&lt;/u&gt;       &lt;ul&gt;       &lt;li&gt;The &lt;b&gt;InfoContent&lt;/b&gt; behaves just like a control container. You can use its Controls property to add whatever controls you like to the marker&amp;#39;s InfoWindow content. &lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.artembg.com/video/GoogleMarkerInfoWindow"&gt;Check out the online video&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;b&gt;StreetView&lt;/b&gt; support added&lt;/u&gt;       &lt;ul&gt;       &lt;li&gt;&lt;b&gt;IsStreetView&lt;/b&gt; property to switch the GoogleMap control to StreetView; &lt;/li&gt;        &lt;li&gt;&lt;b&gt;StreetViewMode&lt;/b&gt; property to switch between Panorama and Overlay mode &lt;/li&gt;        &lt;li&gt;&lt;b&gt;StreetViewPanoID&lt;/b&gt; property to point to a DOM element by ID, where StreetView to be shown on map click when Overlay mode is selected, if this is not set, the control will render out an DIV to be use just bellow the google map; &lt;/li&gt;        &lt;li&gt;Check out this online sample page &lt;a href="http://googlemap.artembg.com/map/StreetView.aspx"&gt;StreetView&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;u&gt;&lt;b&gt;GoogleMapView&lt;/b&gt; is extended with the new map types: &lt;b&gt;Satellite3D&lt;/b&gt;, &lt;b&gt;MapMakerNormal&lt;/b&gt;, &lt;b&gt;MapMakerHybrid&lt;/b&gt;&lt;/u&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Changes&lt;/h5&gt; (For a full list check out GoogleMap Control 4.0 beta as well)   &lt;ul&gt;   &lt;li&gt;JSON improvements and improved &lt;b&gt;Markers&lt;/b&gt; persistence during the post back &lt;/li&gt;    &lt;li&gt;&lt;b&gt;InfoWindowContent&lt;/b&gt; property of GoogleMarker was renamed to &lt;b&gt;InfoWindowTemplate&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;ImageUrl&lt;/b&gt; property of GoogleMarker was renamed to &lt;b&gt;IconUrl&lt;/b&gt;; &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;ASP.NET 2.0 Issues&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;SampleWebSite2.0 was added for running the GoogleMap control samples under ASP.NET 2.0 &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=54" width="1" height="1"&gt;</description><category domain="http://community.artembg.com/blogs/velio/archive/tags/GoogleMap+Control/default.aspx">GoogleMap Control</category></item><item><title>New Video published</title><link>http://community.artembg.com/blogs/velio/archive/2009/04/02/new-video-published.aspx</link><pubDate>Thu, 02 Apr 2009 11:38:30 GMT</pubDate><guid isPermaLink="false">d940e6da-e8a2-44c6-b8b1-ae79213f3010:36</guid><dc:creator>velio</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://community.artembg.com/blogs/velio/rsscomments.aspx?PostID=36</wfw:commentRss><comments>http://community.artembg.com/blogs/velio/archive/2009/04/02/new-video-published.aspx#comments</comments><description>&lt;p&gt;I just published a new video: Using Skin to manage GoogleMap Control &amp;quot;Look&amp;amp;Feel&amp;quot;.   &lt;br /&gt;Check it out &lt;a href="http://www.artembg.com/video/GoogleMapUsingSkin" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://community.artembg.com/aggbug.aspx?PostID=36" width="1" height="1"&gt;</description></item></channel></rss>