<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>  ASP.NET</title>
        <link>http://geekswithblogs.net/Mohamed/category/1274.aspx</link>
        <description>Any thoughts I may have about this interesing technology!</description>
        <language>en</language>
        <copyright>Mohamed Meligy</copyright>
        <managingEditor>eng.meligy@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>ASP.NET Data Tutorial Videos + 6 Months asp.netPRO free subscription </title>
            <link>http://geekswithblogs.net/Mohamed/archive/2008/01/23/asp.net-data-tutorial-videos--6-months-asp.netpro-free.aspx</link>
            <description>Early this morning, a guy called Ravi Nangunoori emailed me about a new website (&lt;a target="_blank" href="http://www.dotnetvideos.net/" style="font-style: italic;"&gt;www.dotnetvideos.net&lt;/a&gt;). The website is a FREE video tutorial collection he created (and still working on more) for different ASP.NET related topics. I find his pretty interesting as it offers:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;A video version of almost all the the great written &lt;a href="http://www.asp.net/learn/data-access/"&gt;data tutorials available on the official ASP.NET website&lt;/a&gt; (few are still work in progress)&lt;/li&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Six months FREE subscription to asp.netPRO magazine to all registered users (for more information&lt;/span&gt; c&lt;a href="http://www.dotnetvideos.net/aspnetProsubscriptionoffer/tabid/292/Default.aspx"&gt;heck the details page&lt;/a&gt;).&lt;br /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
Well, let's see what he wrote in his email: (By the way, he thought my name was Ahmed not Mohamed!)&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;br /&gt;
&lt;quote&gt; &lt;span style="font-style: italic;"&gt;Hello Ahmed, i periodically visit your blog.  i launched a multi media content website &lt;/span&gt;&lt;a target="_blank" href="http://www.dotnetvideos.net/" style="font-style: italic;"&gt;www.dotnetvideos.net&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;i have over 100+ videos on the site right now with an additional 200+ videos in the pipeline ready to be added.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;Many more videos are in the pipeline. I created this website as a community give back.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;Every registered user of my website will receive a FREE 6-month subscritpion to &lt;/span&gt;&lt;a target="_blank" href="http://asp.net/" style="font-style: italic;"&gt;asp.net&lt;/a&gt;&lt;span style="font-style: italic;"&gt; PRO magazine.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; i would appreciate it, if you can announce the launch to the readers of your blog.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;You may be instrumental in making your readers to receive a premier asp.netPRO magazine.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;i would also invite you to visit my website. thanks for your time and consideration.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;--ravi nangunoori&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;a target="_blank" href="http://www.dotnetvideos.net/" style="font-style: italic;"&gt;www.dotnetvideos.net&lt;/a&gt;&lt;/quote&gt;&lt;/div&gt;
&lt;quote&gt;&lt;/quote&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118820"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118820" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/118820.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2008/01/23/asp.net-data-tutorial-videos--6-months-asp.netpro-free.aspx</guid>
            <pubDate>Wed, 23 Jan 2008 13:39:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/118820.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2008/01/23/asp.net-data-tutorial-videos--6-months-asp.netpro-free.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/118820.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/118820.aspx</trackback:ping>
        </item>
        <item>
            <title>To Microsoft or ALT ? - OR- AJAXPro Founder Stopped Working On It</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2008/01/05/to-microsoft-or-alt----or--ajaxpro-founder-stopped.aspx</link>
            <description>&lt;p&gt;Few hours ago, Michael Schwarz, the creator of AJAX.NET Professional (A.KA. AJAXPro), the most successful AJAX framework for ASP.NET after Microsoft's ASP.NET AJAX Framework (A.K.A., ATLAS) has stated that &lt;a href="http://weblogs.asp.net/mschwarz/archive/2008/01/04/future-of-ajax-net-professional.aspx"&gt;he'll no longer be working on the project&lt;/a&gt;. Furthermore, he even recommended users to move to Microsoft's AJAX Framework instead!! The reasons Michael mentioned why he will stop the project used by 13.3% of ASP.NET developers doing AJAX work include the fact that ASP.NET AJAX is part of ASP.NET 3.5 itself, and that he believes future innovation on the client side will be in other areas not just AJAX.&lt;/p&gt;  &lt;p&gt;I haven't used AJAXPro in production myself, but I used to provide support for few other friends who did, and it was really a neat piece of software. The ability to have wrappers for YUI and other pure client libraries impressed me, but I never used it on production stuff for one reason. I expected this moment to come !!&lt;/p&gt;  &lt;p&gt;This brings me to the same thing I used to worry about myself and later was a major concern when I started getting slightly involved in ALT.NET movement. The old quote says "You never lose your job because you chose Microsoft",  and that's usually true. AJAXPro story has always been weird to me. I kept wondering when will the story keep like this, good implementation from Microsoft, and another very interesting implementation from the outside, besides few more working implementations. It's not just about AJAXPro, but is a general issue. &lt;/p&gt;  &lt;p&gt;Don't get me wrong. I believe that AJAXPro was one GREAT reason behind the current quality of ASP.NET AJAX (plus other additions, like having briliant guys working on it, especially Nikhil). Same as I believe that Castle's MVC framework named MonoRail was one of the teachers for ASP.NET MVC  and both appeared simply because RubyOnRails was a great MVC framework that made most people suddenly value MVC and surprisingly some people even hate webforms as if it was found by the devil (&lt;a href="http://geekswithblogs.net/Mohamed/archive/2007/04/24/Monorail-Is-it-the-right-direction--Well-its-not.aspx"&gt;I wrote about it before&lt;/a&gt; in the context of other areas like D)I. Even more examples are NUnit and VSTS Tester features. But what then ??&lt;/p&gt;  &lt;p&gt;VSTS never killed NUnit and I don't will. Instead, NUnit is not the only testing framework, there's also MbUnit later and even XUnit recently. On the other hand, AJAXPro is now over. More interesting stories are Subsonic and BLINQ. Now the founder of Subsonic works for Microsoft and Subsonic itself is gaining excellent popularity because it's 100% FREE while LLBLGen (the best ORM for .NET in my opinion) and .NETTiers (while requires buying CodeSmith), and is even competing with other FREE options like NHibernate and Microsoft's own FREE ORM, LINQ2SQL. Once Subsonic started (and it was called ActionPack as for ActionPack of RubyOnRails) I &lt;a href="http://geekswithblogs.net/Mohamed/archive/2006/08/29/89575.aspx"&gt;blogged that we don't really need something competitive to BLINQ&lt;/a&gt;, and I said it's waste of effort (because of the old quote). Now BLINQ itself is likely dead, never heard of it or Managed JScript for long. Anyway, at this time the timing was the factor, if Subsonic appeared before BLINQ, it'd make sense, but that it appears while BLINQ was in development instead of working with BLINQ and LINQ2SQL and providing lots of ideas, feedbacks and even toolkits for better jobs, it didn't look right. If you think this is 100% against ALT.NET mentality, you haven't got my point yet.&lt;/p&gt;  &lt;p&gt;The point is, such frameworks and alternative tools are so important for us as developers. They are the true reason behind the quality of Microsoft frameworks. If there's an area where there should be a framework or a tool, and nobody for the competitive platforms has considered creating one, and even more no one in the .NET world has tried creating one, Microsoft will almost never bother creating it's own. Even if they do, the fact that they have no competitor and/or teacher will make their result a really crappy one, which is normal for anyone working from scratch (no previous experiences in the world) with market dominance (completely no competition), not just for Microsoft. Don't get me wrong on "learning" too. I heard Microsoft guys are not allowed to read other's code for legal issues, but at least learn from feature sets and high level architectures shared among many bloggers!&lt;/p&gt;  &lt;p&gt;So, clearly, if you are going for stability, it's Microsoft. If you looking for feature set and quicker results it's ALTernatives (speaking inside the domain of .NET Framework), because Microsoft always comes late, and they will ever do. Again, it's not about Microsoft specifically. The other quote says "If you are fat, you can't run". Once Microsoft gets it, in most situations they do it best, but after so long time. This means sooner or later you have to switch back to Microsoft, and maybe I'm the one who's too lazy here or so, but this fact that "you have to switch sometime" really annoys me, but this is how it goes.&lt;/p&gt;  &lt;p&gt;Let's see some examples: now ASP.NET MVC is expected to kill Monorail. What Monorail thought of as I read was to be some framework that works around ASP.NET MVC and work with it not compete with it. Also, ASP.NET AJAX is getting mature enough to compete with other .NET AJAX framework like AJAX.NET Professional and this simply killed the other framework; while ASP.NET AJAX is still way behind when compared to pure client frameworks whether older like script.aculo.us or newer like jQuery. The fact it's the best for webforms means that people working with webforms will always use it, while others working with Monorail or AS.NET MVC itself will probably go for jQuery or so. VSTS is now in it's 2nd version still (VSTS 2005, VSTS 2008) and this is very early for it's testing features to affect other testing frameworks especially when you consider the huge price difference (FREE vs. thousands of dollars). The old, not always outdated quote says "Microsoft releases a great working product, starting with version 3". Subsonic is now pushed by Microsoft while they still push Linq2SQL powerfully, but again, this is "now", how about later ?? Remember (or add to your information) than until today other player in the ORM ground like LLBLGen is even better than LINQ2SQL itself that it for example has a very sophisticated designer studio and more importantly has more support for prefeteching loading with least queries) related entities at the same time, and this something big. The next version will even provide LINQ syntax which makes the difference smaller, but again, it's quite way expensive. It'd make more sense to me than the current mess if the guy behind LLBLGen and the guy behind APAXPRo both simply joined Microsoft and their work was acquired. That they continue working on the same stuff but under Microsoft's umbrella without ugly huge corporate restrictions and complete freedom, sort of similar to the guys working on ASP.NET MVC. But we do not work in an ideal world !!&lt;/p&gt;  &lt;p&gt;So, we'll still living in the same miss. Microsoft only is a very limited painful yet guaranteed option, ALT option is the total amazement and innovation but can simply disappear in a moment.&lt;/p&gt;  &lt;p&gt;Happy mess, geeks :D :D :D&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f3fe3f65-e837-4a21-911f-fa2b6ee100d5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAX.NET%20Professional" rel="tag"&gt;AJAX.NET Professional&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAXPro" rel="tag"&gt;AJAXPro&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%20AJAX.%20ATLAS" rel="tag"&gt;ASP.NET AJAX. ATLAS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ALTNET" rel="tag"&gt;ALTNET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ALT.NET" rel="tag"&gt;ALT.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118262"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118262" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/118262.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2008/01/05/to-microsoft-or-alt----or--ajaxpro-founder-stopped.aspx</guid>
            <pubDate>Sat, 05 Jan 2008 00:37:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/118262.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2008/01/05/to-microsoft-or-alt----or--ajaxpro-founder-stopped.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/118262.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/118262.aspx</trackback:ping>
        </item>
        <item>
            <title>VS 2008 Templates for ASP.NET AJAX Extensions 1.0</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/12/20/vs-2008-templates-for-asp.net-ajax-extensions-1.0.aspx</link>
            <description>&lt;span style="font-weight: bold;"&gt;ASP.NET AJAX Original Roadmap&lt;/span&gt;&lt;br /&gt;
When Microsoft released ASP.NET AJAX Extensions (formerly codename ATLAS), their roadmap for the core extensions was to release ASP.NET AJAX 1.0 for ASP.NET 2.0 (AKA, .NET Framework 2.0) as separate installation, and have that to integrate greatly with Visual Studio 2005, and then integrate that with ASP.NET 3.5 to be part of it, enabling you to have the same experience (better experience actually) with Visual Studio 2008. Of course that's all while having the "futures" line developed in parallel and eventually merged with the core, and having ASP.NET AJAX Control Toolkit developed by the community.&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
The story with VS 2008&lt;/span&gt;&lt;br /&gt;
Now with VS 2008 multi targeting (meaning being able to use it with multiple versions of the .NET framework, not just .NET fx 3.5, but 3.0 and even 2.0 as well), it's relatively easy to work with "&lt;span style="font-style: italic;"&gt;new&lt;/span&gt;" ASP.NET 2.0 websites the same way you do in Visual Studio 2005; except that in VS 2008, you'd do that as if you were adding ASP.NET AJAX support to an "&lt;span style="font-style: italic;"&gt;existing&lt;/span&gt;" ASP.NET 2.0 website, meaning you have to add the references yourself, and modify web.config file with these big blocks of markup for config sections, assembly references and tag mapping, HTTP handlers, etc..... on your own, as VS 2008 of course doesn't have the ASP.NET AJAX for ASP.NET 2.0 integrated.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;So, what's new ... ?&lt;/span&gt;&lt;br /&gt;
To me the current model is totally fine. That's how I do it most of the time anyway because they guarantee less weird runtime errors and since I used to reference local versions of the ASP.NET AJAX assemblies when I used to work on multiple sites running different BETAs and other pre-release versions of ASP.NET AJAX 1.0.&lt;br /&gt;
Now Microsoft wanted to make that easier by porting ASP.NET AJAX 1.0 to VS 2008 so that you can download those, and be able to create new ASP.NET 2.0 website with ASP.NET AJAX 1.0 support just by creating another web site/project from the New Website/ New Project dialog(s).&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5c7df430-1c34-40d2-b6ec-81353b5fcf2e&amp;amp;displaylang=en"&gt;Download ASP.NET AJAX 1.0 Templates for Visual Studio 2008&lt;/a&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;Note:&lt;/span&gt; Of course you need to have &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&amp;amp;displaylang=en"&gt;ASP.NET AJAX Extensions 1.0&lt;/a&gt; installed already.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2007/12/19/using-vs2008-to-target-net-framework-2-0-with-asp-net-ajax.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Read Brad Abrams[MSFT]'s Announcement&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9d43c8e1-75b4-4428-b94e-aa7ceb0ab0c2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/VS%202008"&gt;VS 2008&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ASP.NET%20AJAX"&gt;ASP.NET AJAX&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Visual%20Studio"&gt;Visual Studio&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117880"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117880" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/117880.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/12/20/vs-2008-templates-for-asp.net-ajax-extensions-1.0.aspx</guid>
            <pubDate>Thu, 20 Dec 2007 18:03:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/117880.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/12/20/vs-2008-templates-for-asp.net-ajax-extensions-1.0.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/117880.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/117880.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Feast Gift: 3 FREE MS Press Books (LINQ, ASP.NET AJAX, Silverlight)</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/12/19/microsoft-feast-gift-3-free-ms-press-books-linq-asp.net.aspx</link>
            <description>&lt;p&gt;Today is the primary day of Muslim's ADHA (Sacrifice) feast. I'm enjoying it with family activities in my grandmother's house and few hours later my uncle's house. Thanks God both have wireless Internet connectivity. This how I could still check my Google Reader items (see &lt;a href="http://www.google.com/reader/shared/08221036579558509505"&gt;shared items&lt;/a&gt;), while showing my profile pictures to my  uncle's little daughter and other kids from the family!&lt;/p&gt;
&lt;p&gt;Then I  noticed that the feast has a great gift, coming from Microsoft this time. I found that Microsoft has opened &lt;a href="http://csna01.libredigital.com/"&gt;3 MS Press books completely FREE&lt;/a&gt; for public.&lt;/p&gt;
&lt;p&gt;The books are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.microsoft.com/MSPress/books/10725.aspx"&gt;&lt;em&gt;&lt;strong&gt;Introducing Microsoft LINQ&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; by Paolo Pialorsi and Marco Russo (ISBN: 9780735623910)      &lt;br /&gt;
    This practical guide covers Language Integrated Query (LINQ) syntax fundamentals, LINQ to ADO.NET, and LINQ to XML. The e-book includes the entire contents of this printed book!&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.microsoft.com/MSPress/books/10966.aspx"&gt;&lt;em&gt;&lt;strong&gt;Introducing Microsoft ASP.NET AJAX&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; by Dino Esposito (ISBN: 9780735624139)      &lt;br /&gt;
    Learn about the February 2007 release of ASP.NET AJAX Extensions 1.0, including an overview and the control toolkit.&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.microsoft.com/MSPress/books/12285.aspx"&gt;&lt;em&gt;&lt;strong&gt;Introducing Microsoft Silverlight 1.0&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; by Laurence Moroney (ISBN: 9780735625396)      &lt;br /&gt;
    Learn how to use Silverlight to simplify the way you implement compelling user experiences for the Web. Discover how to support an object-oriented program model with JavaScript.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://csna01.libredigital.com/"&gt;&lt;strong&gt;Download your feast gift FREE from Microsoft&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Note:&lt;/u&gt;&lt;/strong&gt; Thanks to &lt;a href="http://geekswithblogs.net/Sreeblog/"&gt;Sreenivas Mogullapalli&lt;/a&gt;, a fellow &lt;a href="http://geekswithblogs.net/"&gt;GWB&lt;/a&gt; guy, for &lt;a href="http://geekswithblogs.net/Sreeblog/archive/2007/12/19/117834.aspx"&gt;spreading&lt;/a&gt; this gift news.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f89ef471-432e-4d82-b14b-184f20a9d79e" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/FREE"&gt;FREE&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/book"&gt;book&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ebook"&gt;ebook&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Microsoft%20Press"&gt;Microsoft Press&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/MS%20Press"&gt;MS Press&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/LINQ"&gt;LINQ&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ASP.NEt%20AJAX"&gt;ASP.NEt AJAX&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117838"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117838" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/117838.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/12/19/microsoft-feast-gift-3-free-ms-press-books-linq-asp.net.aspx</guid>
            <pubDate>Wed, 19 Dec 2007 15:50:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/117838.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/12/19/microsoft-feast-gift-3-free-ms-press-books-linq-asp.net.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/117838.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/117838.aspx</trackback:ping>
        </item>
        <item>
            <title>dotNETwork, 1st Big Offline User Group in Egypt -Or- SQL 2008 + MVC</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/12/15/dotnetwork-1st-big-offline-user-group-in-egypt--or--sql.aspx</link>
            <description>&lt;p&gt;Last Tuesday night witnessed a relatively new kind event held in Microsoft Egypt building @ smart village. It was said to be "announcing &lt;a href="http://www.dotnetwork.org/"&gt;dotNETwork&lt;/a&gt; user group" which I thought was some Microsoft Egypt initiative for a new offline user group model of developer community. I was so excited about so, and it was even better!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Idea&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.dotnetwork.org/"&gt;dotNETwork&lt;/a&gt; group is just am offline user group that's done right. It just happened to have Microsoft Egypt host the group gathering, as this is the hardest issue to maintain. Also, Microsoft name made the number of comers reaches over 100 attendee (not an accurate number too!). Note that the gathering/event speaker, Steven Forte, was invited by the group. not by Microsoft :).&lt;/p&gt;
&lt;p&gt;This is the real start for offline user groups in Egypt I believe. Before, we used to have smaller user groups here in SilverKey and in ITWorx, we in silverKey started the concept of a public event last year, and recently ITWorx followed with their own event, but a wide spread user group only existed online, like MiddleeastDevelopers yahoo group. This &lt;a href="http://www.dotnetwork.org/"&gt;dotNETwork&lt;/a&gt; group is the first BIG offline user group, and I'll be proud t try to join this effort.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Day, Session 1/2: SQL Server 2008&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Steven in general is one of the most important speakers in Egypt, having attended almost if not all the previous Microsoft MDC events. everybody already knows him as a superior SQL Server guy who (due to his work nature) can also talk well many other technical topics.&lt;/p&gt;
&lt;p&gt;The first session was on SQL Server 2008. According to Steve, this will be launched in the launch event February 29, 2008 although will be released around July! He went on categorizing the new features for SQL Server 2008 as follows:&lt;/p&gt;
&lt;p&gt;The enterprise data features, which are more for admins than developers, include the ability to do hot swapping of hardware, even processors! More datat types (which he got back to later), and various reporting and analysis services features, various BI areas. Working on the backup system that's currently slow compared to 3rd party tools that even create way smaller backups and have better options (selective backups).&lt;/p&gt;
&lt;p&gt;Also, one other category is predictable performance. Steven mentioned how important the performance show plan is, and went to tell about the "query parallelism" (running the same query twice on different processors or so, and returning the value of the one that's done first), "resource governer" which works on deprioritizing certain queries to allow others to run faster. I understood you can choose prioritization based on some resource pool options like customized connection string, server load, user, time or day,....&lt;/p&gt;
&lt;p&gt;Stephen mentioned enhancements to the SQL Server workbench, the reporting of resource over/under utilization, so that an admin may choose to do dynamic allocation for memory, processing, etc. He stated that if you have multiple processors, you can allocate a certain processor to specific SQL tasks.&lt;/p&gt;
&lt;p&gt;Speaking of "beyond relational" features, he also mentioned new data types like FileStream, and some essential features like integrating the fullText search with the table itself (It used to be so painful to do DB replication because of missing this before :D), filtered indexes, ability to store "hierarchical" data as &lt;em&gt;hierarchical&lt;/em&gt; in your DB, DATE and TIME specific data types in addition to DATETIME, the TIME type is accurate down to nanoseconds; Geometry data type allowing saving geographical information and therefore enabling you to write geography specific where conditions on these :D :), when retrieved in a .NET DataSet or so, this is a string that's in the same format that VirtualEarth uses, if you want to consider integration ;) ;). Also, a DateTimeOffset type which is equivalent to TimeSpan in .NET. Theoretically, this allows you to do better operations on the dates/times, but, the subtraction demo didn't work for this CTP. Stephen asks you to blame Bill Gates :) :) :).&lt;/p&gt;
&lt;p&gt;More enhancements were pretty interesting as well, just being able to write "+=" in SQL is sure great :D (it seriously is, especially when promised to work with ALL data types). Another interesting feature he demoed is being able to use "table valued" parameters as SPROC parameters. This is like being able to send a parameter which is actually a series of items each of a complex data type (tupple), just like tables are, and being able to use normal insert,... and other table operations on these (Much like sending temporary table to the SPROC, if I got it right). The most interesting thing is that if you are using .NET 3.5 (ADO.NET 3.5), you can pass LINQ results or DataTable inside a DataSet as table valued parameter!!&lt;/p&gt;
&lt;p&gt;Also, the new MERGE feature is pretty magical, especially for dataware housing systems.you can now merge data of different cells in certain column based on whatever criteria you want, or just using the first space in the value of the shortest cell, if that's string type and you are having no condition/pattern. It's just a pattern recognition thing, so, it works for all UTF languages (We're Egyptians you know :D). Actually, this is not the only data ware housing and SSIS features and enhancements. There's also in the BI Workbench some interesting stuff having Fuzzy Lookups and some enhances to cubes (New designer tools, WIZZARDS, Stephens laughs!). The last features he mentioned were being able to use reporting services for native word rendering, note that this means the report rending itself, not just manual exporting, of course with special designer support, and being able to write C# when working with reporting services as part of integration services.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The session was more than great as it had pretty enough information for a "sneak preview" session. MAN, this is my favorite standard for a session, not any less, and Stephen is one of the few who match this standard when we come to SQL :) :) :).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Day, Session 2/2: ASP.NET Design Patterns: MVC + Database Design Patterns: SCD&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;MVC Pattern&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Starting to talk about many books available for design patterns, Stephen went back to what design patterns are and where they came from. He said they are not as hard as reported by book publishers :D. Of course he defined them as documented general ways to solve common problems (like getting data from db and presenting them on a web page). He also mentioned a situation he had himself with a new Egyptian developer who joined his team recently. The solution hey working on was designed using the MVC pattern, which the developer knew, this made the conversation only goes about JUST the business logic, because the pattern itself is known and used 100 times already, Stephen said.&lt;/p&gt;
&lt;p&gt;The history of design patterns was the most interesting part of the session to me. How that this all started in architecture, with European city buildings planning and how the term "design patterns" while planning the city of New York afterwards!!! There was a book on that that SmallTalk guys read and made the first software design patterns starting with it. As SmallTalk is not the language most people are actually using, the Gang Of Four took the SmallTalk work/book (with giving credits and everything :D) and build their own famous reference on. Stephen reminded us that after all, design patterns are just ways to speed up development by preventing us from "re-inventing the wheel". Still, they're just the blueprint/framework of the solution, not the solution itself.&lt;/p&gt;
&lt;p&gt;Getting to MVC in particular (with ASP.NET), Stephen said it's one of the oldest (since the days of the SmallTalk work), and it works for having multiple views of the same model. The model is what your DB represents for example, the view is the UI, following the example, the controller is the code you write to show the model on the page.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Actually, this is when I started to not feel OK!! To me, this doesn't sound much different than the MVP pattern which MSDN documentation says it's the model for WebForms Code Behind in ASP.NET. Actually, Stephen made a joke that you shouldn't believe such a documentation when it comes to concepts not specific products, and I thought, most of the guys sitting there seemed to not even know what design patterns are. The beauty of this specific session is that it's really new in public event sessions in Egypt :S, so, we just continued...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Continuing with Stephen, he went on talking about the Model, A model is a response to instruction of change of state (data , user interaction). You know, a search text you enter in a text box is a change in state, that makes the already displayed results (Model) before performing the search become out of sync.One more reason why you shouldn't mix SQL with UI (write SQL in button click or even use SqlDataSrouce) is that you'd be mixing View and Model. One way to do retrieval is using Typed DataSets, Stephen said, the way he use it though, he explained, writing stored procedures in the DB and use them from business classes with static methods (Yeah, I think this part is personal preference too!).&lt;/p&gt;
&lt;p&gt;Speaking of the View, he said that this is the easy part. It just all about the display of the data.  Maybe you need to set what to display or hide based on authentication, authorization, but you can use the template view features built into ASP.NET.&lt;/p&gt;
&lt;p&gt;Now, we came to the Controller.this is the part that intersects with both the View and Model. When it needs to get some data, it informs the model to get it from there, when it has just "got" the data, it informs the View to display it. At this point of the talk, he suggested having a "Page Controller" (A base class for all pages to inherit from instead of directly inheriting from System.Web.UI.Page) to hold common helper functionality in (I liked him when he said that cause I've been taking that approach always, until I came to SK and found them also accidentally using it as well :D).&lt;/p&gt;
&lt;p&gt;Anyway, later he went on implementation issues, how that was hard to implement earlier if you write the code the code in the page code behind, and data access layer issues with he Model as well. He demoed an implementation using ObjectDataSource having the logic and data access in different assembly than the web project, at this point we came to the biggest word and mean reasoning of the MVC pattern and such separation in general, which is TESTABILITY (you know, an MVC session couldn't exist without that word :) :) ).  Explaining this, he clarified "Modularity: Separation between assemblies", and how that this the key for testability, especially that you cannot simulate the Page Life Cycle to do your unit tests.&lt;/p&gt;
&lt;p&gt;As one of the biggest issues mentioned nowadays with the new MVC framework for ASP.NET, he went to discuss ViewState. The good of keeping state in a stateless environment like web/HTTP and the evil of page size. He said you can intercept your View (page) to handle storing it on the server and you can do that in your page controller to make it site wide, the audience was very enthusiast about that part, and we took really enough (more than enough to me :D ) time discussing the alternatives and server techniques, etc....&lt;/p&gt;
&lt;p&gt;Finally, he named the ASP.NET MVC framework. He didn't say much about it. He just said that Microsoft MEANS IT this time when they say it's should NOT be used in production yet. This is good to get as explicit as this to a naughty boy like me :) :D :D.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Afterwards, we turned to DB patterns. I didn't feel that MVC part was enough and wondered why splitting the session at all. I felt that part was quite little by then, although now I fell it had pretty good amount of information (my hands started to feel tired already from writing :D). I don't know, maybe it's just my high acceptance standard or the fact that he didn't talk about the MVC Framework (which was just released quite close to the session time, he has ALL excuse not to mention it of course), or both, I don't know. It was nice to bring the topic to public talks in Egypt anyway, and he did really well explaining the topics he opened :).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;DB Patterns: SCD&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Looks like Stephen meant to make this session all about non-opened topics in public Egyptian events :). He is a frequent MDC speaker and he knows there're VERY few other public tech. events in Egypt (Actually, just our SilverKey DemoDay and very recently ITWorx CuttingEdge Club), so, he knows what topics are not on the table and did great bringing them up :) :) :).&lt;/p&gt;
&lt;p&gt;The topic of the second part of the session is something that matters most to dataware housing work. He first said that we all are using transactional deign patterns in DB design, you know, the way we use normalization and depend on DB relations.&lt;/p&gt;
&lt;p&gt;The design pattern he wanted to show us this time was called "Slowly Changing Dimensions" or SCD. This is yet a different  data model from the transactional one that is used mainly with reports. The idea is simply using flat tables (do I hear somebody yelling "denormlization"?) for storing data. This is good for reports as it is a kind of physical transformation of data, not their views.&lt;/p&gt;
&lt;p&gt;The real world situation example he brought to us from his past work experience was a situation in a site which is like news one, he chose to not save the pages with same elements in the same table, instead, he create a table for each page of these. That was in a separate production DB not on the development/staging or even data entry server. This is because the area where this has a benefit is when you need to bring the online transactional data. That's why he called this way "Published SCD".&lt;/p&gt;
&lt;p&gt;Working with this way, having two databases one of them for transactional and another for published SCD data brings new challenges though. You need to always keep the two databases in synch.  You can use OLTP or so to do it, but after all, you need to remember that this model is not suitable for time sensitive data (based on time series, for the example he brought up. that was one day).&lt;/p&gt;
&lt;p&gt;There are common ways to do synch actually, you can relay on SSIS packages, by the time of the sample story he told us (not very close :) ), they used DTS to do it. He showed us a DEMO on how to automate such sync after every database INSERT, and mentioned that you are likely to get harder challange when it comes to editing (Aka UPDATEing) data on the transactional DB and then finding which part on the published DB matches the UPDATEd data and actually UPATE it.&lt;/p&gt;
&lt;p&gt;Later, he went on the value of such. The simplest example is that Amazon and sites of that size are of course using it in their work.&lt;/p&gt;
&lt;p&gt;The last demo was doing partitioning for table Index. He mentioned the facts about a clustered and non clustered index and the fight that come to that between developers and DBAs usually for "when to create an index" :D :).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;In general, that's as I said, some topic an average developer of even 5 years experience might not have dealt with, and would be too worried and frightened to such a different way of thinking, as most developers have grown up on valuing normalization and speaking of performance without thinking twice. Having heard it from such a domain expert was very useful to everybody there I guess, and sure to me as well :) :) :).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;u&gt;If I were you, I wouldn't have reached this line at all, or at least reached it by skipping all the story above :D, so, if you have read it all (I doubt!), you really deserve a BIG thank you for this :) :) :).&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The last thing I want to say in this context is that having a started offline user group not just a public independent/semi-independent event is a step that was waited and worked on for so long. I expect way more to come from this user group and plan to join and share in that great movement myself. I'm as excited as I was with the global ALT.NET movement and plan to do my best to bring the ALT.NET culture to the &lt;a href="http://www.dotnetwork.org/"&gt;dotNETwork&lt;/a&gt; group. Stephen has already gave me a great help by his excellent selection of topics for his second session and his usual expected outstanding performance in delivering them, so, that was a great start for a great group.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Be with us and keep tuned for more work to come. The &lt;/strong&gt;&lt;a href="http://www.dotnetwork.org/"&gt;&lt;strong&gt;dotNETwork&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; group plans to have more events soon and other activities as well. The almost confirmed news is that it'll have another similar event monthly (at least next month), with native Egyptian speakers most likely, to make the move more intimate and more effective/interactive, so, watch the &lt;strong&gt;group &lt;/strong&gt;&lt;a href="http://www.dotnetwork.org/"&gt;&lt;strong&gt;website&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; and my weblog for updates on this. You may also want to join the Yahoo or facebook groups (see details on the site).&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e67b8815-cde7-46d4-8e8f-aaf615199a61" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/dotNETwork"&gt;dotNETwork&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ALT.NET"&gt;ALT.NET&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ALTNET"&gt;ALTNET&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/SQL%20Server%202008"&gt;SQL Server 2008&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/KATMAI"&gt;KATMAI&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/MVC%20Framework"&gt;MVC Framework&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/ASPNETMVC"&gt;ASPNETMVC&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/SCD"&gt;SCD&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Design%20Patterns"&gt;Design Patterns&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Egypt"&gt;Egypt&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Local%20Events"&gt;Local Events&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117746"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117746" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/117746.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/12/15/dotnetwork-1st-big-offline-user-group-in-egypt--or--sql.aspx</guid>
            <pubDate>Sat, 15 Dec 2007 19:21:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/117746.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/12/15/dotnetwork-1st-big-offline-user-group-in-egypt--or--sql.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/117746.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/117746.aspx</trackback:ping>
        </item>
        <item>
            <title>More Details on Coming .NET Web Products Roadmap</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/11/30/more-details-on-coming-.net-web-products-roadmap.aspx</link>
            <description>Yesterday I &lt;a href="http://geekswithblogs.net/Mohamed/archive/2007/11/30/first-asp.net-mvc-framework-preview-next-week--silverlight-1.1.aspx"&gt;referred to&lt;/a&gt; Scott Guthrie's post about the roadmap for coming .NET web related products, highlighting Silverlight 2.0 and ASP.NET MVC framework especially.&lt;br /&gt;
&lt;br /&gt;
Now, &lt;a href="http://spellcoder.com/blogs/tayseer/default.aspx"&gt;Mohamed Tayseer&lt;/a&gt; (my current team mate and complement in development!) sent me &lt;a href="http://oakleafblog.blogspot.com/2007/11/aspnet-net-35-extensions-preview-to.html"&gt;link to a detailed post&lt;/a&gt; by &lt;a href="http://oakleafblog.blogspot.com"&gt;Roger Jennings&lt;/a&gt;, with many discussions and references related to these products. &lt;span style="text-decoration: underline;"&gt;A must read for anyone who read the previous post&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://oakleafblog.blogspot.com/2007/11/aspnet-net-35-extensions-preview-to.html"&gt;&lt;span style="font-weight: bold;"&gt;Read the post&lt;/span&gt;&lt;/a&gt;.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117266"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117266" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/117266.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/11/30/more-details-on-coming-.net-web-products-roadmap.aspx</guid>
            <pubDate>Fri, 30 Nov 2007 19:23:41 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/117266.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/11/30/more-details-on-coming-.net-web-products-roadmap.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/117266.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/117266.aspx</trackback:ping>
        </item>
        <item>
            <title>First ASP.NET MVC Framework Preview Next Week &amp; Silverlight 1.1 Now Silverlight 2.0</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/11/30/first-asp.net-mvc-framework-preview-next-week--silverlight-1.1.aspx</link>
            <description>Yeah, finally the long awaited preview of ASP.NET MVC Framework will be available, Yeah, I'm tired like you all of seeing so many sample codes without a way to touch them or try other things out.&lt;br /&gt;
Also Silverlight 1.1 will keep on evolving and now has the versionning it deserves, Silverlight 2.0, which is not just a name of course, but comes with broader support of WPF and rich controls and many other features.&lt;br /&gt;
&lt;br /&gt;
These are only few of many super interesting announcements that &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie [MSFT]&lt;/a&gt; posted earlier today about &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx"&gt;.NET Products Roadmap for Web Development&lt;/a&gt;. Other interesing stuff to come includes more AJAX extensions and ASP.NET Extensions in general.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Read the announcement&lt;/span&gt;&lt;/a&gt;.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117243"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117243" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/117243.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/11/30/first-asp.net-mvc-framework-preview-next-week--silverlight-1.1.aspx</guid>
            <pubDate>Fri, 30 Nov 2007 02:37:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/117243.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/11/30/first-asp.net-mvc-framework-preview-next-week--silverlight-1.1.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/117243.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/117243.aspx</trackback:ping>
        </item>
        <item>
            <title>Links: 10 Usability Nightmares You Should Be Aware Of</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/10/02/Links-10-Usability-Nightmares-You-Should-Be-Aware-Of.aspx</link>
            <description>I found this to be a &lt;a href="http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/"&gt;must-read article&lt;/a&gt; for everybody doing serious web authoring (design/development, etc...).&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold; text-decoration: underline;"&gt;Quote from the article:&lt;/span&gt;&lt;br style="font-weight: bold;" /&gt;
&lt;div style="margin-left: 40px;"&gt;
&lt;p&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Sometimes you just want to get the information you’re after, save it and move along. And you can’t. &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;Usability nightmares&lt;/strong&gt;&lt;span style="font-style: italic;"&gt; — which are rather the daily routine than an exception — appear every now and again; usually almost every time you type your search keywords in Google. In his article “&lt;/span&gt;&lt;a href="http://www.gerrymcgovern.com/nt/2006/nt-2006-10-16-awards.htm" style="font-style: italic;"&gt;Why award-winning websites are so awful&lt;/a&gt;&lt;span style="font-style: italic;"&gt;” Gerry McGovern points out that “&lt;/span&gt;&lt;em style="font-style: italic;"&gt;the shiny surface wins awards, real substance wins customers&lt;/em&gt;&lt;span style="font-style: italic;"&gt;” and that is absolutely true. Nevermind what design you have, and nevermind which functionality you have to offer — if your &lt;/span&gt;&lt;strong style="font-style: italic;"&gt;visitors don’t understand how they can get from point A to point B they won’t use your site&lt;/strong&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="font-style: italic;"&gt;In almost every professional design (except from special design showcases such as, e.g., portfolios) you need to offer your visitors&lt;/p&gt;
&lt;ul style="font-style: italic;"&gt;
    &lt;li&gt;a clear, self-explanatory navigation,&lt;/li&gt;
    &lt;li&gt;precise text-presentation,&lt;/li&gt;
    &lt;li&gt;search functionality and&lt;/li&gt;
    &lt;li&gt;visible and thought-out site structure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="font-style: italic;"&gt;And that means that you simply have to &lt;strong&gt;folow the basic rules of usability and common sense&lt;/strong&gt;. You want to communicate with your visitors, don’t drive them away, right?&lt;/p&gt;
&lt;p style="font-style: italic;"&gt;In this article we take a look at some of the &lt;strong&gt;usability nightmares you should avoid designing functional and usable web-sites&lt;/strong&gt;. At the end of the article you’ll also find 8 usability check-points you should probably be aware of.&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/"&gt;Read more&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115784"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115784" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/115784.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/10/02/Links-10-Usability-Nightmares-You-Should-Be-Aware-Of.aspx</guid>
            <pubDate>Tue, 02 Oct 2007 18:56:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/115784.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/10/02/Links-10-Usability-Nightmares-You-Should-Be-Aware-Of.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/115784.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/115784.aspx</trackback:ping>
        </item>
        <item>
            <title>Small Tip - Validating max-length of a text input</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/08/07/Small-Tip---Validating-max-length-of-a-text-input.aspx</link>
            <description>Typically, most or all your text fields in DB have max length. People don't use TEXT / NTEXT or VARCHAR(MAX) / NVARCHAR(MAX) except for things like article bodies and so. Thus, you have to make sure you don't send data to DB more than it actually accepts.&lt;br /&gt;
People typically go two options to work around long input values. Some choose to truncate the data in the business or data tier. Some choose to validate it in the UI. (Yeah, of course you can mix both). Some handle this as part of a general error handling and error UI reporting mechanism they may be having, but this is not the third way &lt;img src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" alt="" /&gt;.&lt;br /&gt;
&lt;br /&gt;
If you do validation (whether or not it's your only line of defence), you need to apply it to all your text inputs, same as you apply RequireFieldValidator to all your required inputs.&lt;br /&gt;
I noticed that many don't know how to validate the max length of a text input, so, here's a sample using the RegularExpressionValidator:&lt;br /&gt;
&lt;br /&gt;
&lt;table width="90%" cellspacing="1" cellpadding="1" border="1" align="" style="background-color: black; text-decoration: underline;" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;label&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;for&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"&lt;/span&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=txtDescription.ClientID &lt;/span&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Description&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;label&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;asp&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;:&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;TextBox&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ID&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"txtDescription"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;runat&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"server"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;TextMode&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"MultiLine"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;SkinID&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"TextArea"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;asp&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;:&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;TextBox&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;asp&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;:&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;RequiredFieldValidator&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ID&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"vldDescription"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;runat&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"server" &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"* &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Desctipion can't be empty"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ValidationGroup&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"DetailsValidation"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;
            &lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Display&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"Dynamic"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"txtDescription"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; /&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;asp&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;:&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;RegularExpressionValidator&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;runat&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"server"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ID&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"regtxtDescription"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&lt;br /&gt;
            &lt;span style="font-weight: bold;"&gt;                &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold;"&gt;ValidationExpression&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold;"&gt;"(.|[\r\n]){1,599}"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&lt;br /&gt;
                            &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ValidationGroup&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"DetailsValidation"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
            &lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"txtDescription"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
            &lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"* Description too long"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
            &lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(255, 198, 198); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Display&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;=&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(193, 193, 255); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;"Dynamic"&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;asp&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;:&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(252, 244, 216); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;RegularExpressionValidator&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: blue; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(228, 232, 183); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
This is a simple field you see in almost every page that has input form with text input. You have the label telling the user what that field means, if the field is required you have a RequiredFieldValidator for it with the form's ValidationGroup, a proper ErrorMessage/Text based on whether you user ValidationSummary or not, and Display="Dynamic" if you don't want the validator to reserve it's space on screen when it's not firing (here we need this cause we have another validator and we need not see space in between the other validator and the field. There are pretty many other reasons to do of course)&lt;br /&gt;
What we care about here is the .RegulareExpressionValidator which does the trick for us. to validate the text size to accept whatever but still less than 600 characters, I used the regular expression shown in bold which matches any text (including new lines, as they need special escapes in Regex) but within range 1 to 599 characters.&lt;br /&gt;
&lt;br /&gt;
Hope this can be helpful to somebody. I'm considering posting such small tips from time to time as my dear friend and teammate &lt;a href="http://mnour.blogspot.com/"&gt;Mohammed Nour El-Din&lt;/a&gt; pointed me to another tip that it's worth posting, however, I'm not sure how frequent this will be.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114464"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114464" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/114464.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/08/07/Small-Tip---Validating-max-length-of-a-text-input.aspx</guid>
            <pubDate>Tue, 07 Aug 2007 19:35:50 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/114464.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/08/07/Small-Tip---Validating-max-length-of-a-text-input.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/114464.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/114464.aspx</trackback:ping>
        </item>
        <item>
            <title>Gotcha: ASP.NET 2.0 ValidationGroups are NOT related to INamingContainer</title>
            <link>http://geekswithblogs.net/Mohamed/archive/2007/07/12/Gotcha-ASP.NET-2.0-ValidationGroups-are-NOT-related-to-INamingContainer.aspx</link>
            <description>&lt;span style="font-weight: bold; text-decoration: underline;"&gt;The problem:&lt;/span&gt;&lt;br /&gt;
If you have a user control for handling user input, meaning has some input controls, some validators and buttons using the same ValidationGroup, and you want to put that inside a repeater (or any control that has template repeat like DataList or Grid), and you click on the button on the user control of one of the repeater items, all the user controls will be checked for validation, not just the one in the repeater item you want.&lt;br /&gt;
&lt;span style="font-weight: bold; text-decoration: underline;"&gt;The reason:&lt;/span&gt;&lt;br /&gt;
All the validators/buttons in every user control in the repeater share the same ValidationGroup. They ValidationGroup is not affected by the Unique ID of either the validator/button it's set or the control it validates or any other control. It has nothing to do with the controls implementing INamingContainer (which are the controls that handle it's own unique IDs and almost all ASP.NET controls do) . So, if you try to validate one, it uses that ValidationGroup, and therefore applies to all the controls, not the one you want.&lt;br /&gt;
&lt;span style="text-decoration: underline; font-weight: bold;"&gt;The easy WRONG solution:&lt;/span&gt;&lt;br /&gt;
Try to set the ValidationGroup programatically or so to set it to the unique Id or client id of the user control for example. The problem here is that in complex scenarios, with update panels and AJAXToolkit extenders, this can be very messy, and simply doesn't work. Mainly in my complex situations I got two behaviors, the first was HTML encoding the value screwing it up, and the second (weirdest) was truncating the value before the first "$" or "_" character.&lt;br /&gt;
&lt;span style="text-decoration: underline; font-weight: bold;"&gt;The Right Solution:&lt;/span&gt;&lt;br /&gt;
Instead of setting the validation group to some complex text that can be messed up on HTML encoding, just use a number.&lt;br /&gt;
My example was setting the value to some function I called GetUniqueValidationkey(). That's how it looks like:&lt;br /&gt;
&lt;table cellspacing="1" cellpadding="1" border="1" align="" summary="" style="width: 564px; height: 173px;"&gt;
    &lt;tbody style="background: black none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;private string&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; _validationkey;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;protected&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;string&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; GetUnique&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Validationkey&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;if&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;(&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;string&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;.IsNullOrEmpty(&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;_validationkey&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;_validationkey &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;&lt;/span&gt;= &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;new&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; System.&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(225, 121, 91); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Random&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;( this.GetHashCode() ).Next().ToString();&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(71, 148, 69); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p style="margin-bottom: 0.0001pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(204, 204, 55); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;return&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;_validationkey&lt;/span&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
            &lt;p class="MsoNormal"&gt;&lt;span style="background: black none repeat scroll 0% 50%; font-size: 8pt; line-height: 115%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; color: rgb(223, 223, 191); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
Actually, that was the best way to do a really complex scenario with an update panel and form inside modal poup plus more controls all inside the user control set in the repeater item template.&lt;br /&gt;
Easy to implement, yet, took really  long time to try and get right, so, I hope it saves someone that time too!&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113880"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113880" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Mohamed/aggbug/113880.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Mohamed Ahmed Meligy</dc:creator>
            <guid>http://geekswithblogs.net/Mohamed/archive/2007/07/12/Gotcha-ASP.NET-2.0-ValidationGroups-are-NOT-related-to-INamingContainer.aspx</guid>
            <pubDate>Thu, 12 Jul 2007 07:55:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Mohamed/comments/113880.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Mohamed/archive/2007/07/12/Gotcha-ASP.NET-2.0-ValidationGroups-are-NOT-related-to-INamingContainer.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Mohamed/comments/commentRss/113880.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Mohamed/services/trackbacks/113880.aspx</trackback:ping>
        </item>
    </channel>
</rss>