<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Emil Stoichev's Blog</title><link>http://weblogs.asp.net/emilstoichev/default.aspx</link><description>Just a few coding tips</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/estoychev" type="application/rss+xml" /><item><title>Silvester - Silverlight Twitter Widget</title><link>http://feeds.feedburner.com/~r/estoychev/~3/320726142/silvester-silverlight-twitter-widget.aspx</link><pubDate>Thu, 26 Jun 2008 07:23:33 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6321941</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=6321941</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2008/06/26/silvester-silverlight-twitter-widget.aspx#comments</comments><description>&lt;p&gt;Since I started using Twitter I've been looking for a cool Silverlight widget I can put on my blog. Well, I found only Flash widgets so I just built a Silverlight one by myself. &lt;/p&gt;  &lt;div style="width: 250px; height: 310px;"&gt; &lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="100%" height="100%"&gt; &lt;param name="source" value="http://www.silverlightshow.net/twitter/ClientBin/Silvester.xap" /&gt; &lt;param name="onerror" value="onSilverlightError" /&gt; &lt;param name="background" value="white" /&gt; &lt;param name="initParams" value="twitterUser=SilverlightShow" /&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; &lt;/a&gt; &lt;/object&gt; &lt;/div&gt;  &lt;p&gt;I &lt;a href="http://www.silverlightshow.net/items/Silvester-A-Silverlight-Twitter-Widget.aspx"&gt;wrote an article&lt;/a&gt; in SilverlightShow.net how it is implemented and provided a &lt;a href="http://www.silverlightshow.net/storage/Silvester.zip"&gt;full source code&lt;/a&gt; for the widget. Read how to put it on your blog and how to build it by yourself.&lt;/p&gt;  &lt;p&gt;Unfortunately I'm not able to place it on this blog because of the shrunk CommunityServer features available to me.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6321941" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=bZtyYi"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=bZtyYi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=AlPskI"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=AlPskI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=fkWpoI"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=fkWpoI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=WGp4FI"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=WGp4FI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=Q4mZ4i"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=Q4mZ4i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=HF0XJI"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=HF0XJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2008/06/26/silvester-silverlight-twitter-widget.aspx</feedburner:origLink></item><item><title>Tip: RowFilter with IN operator over a column of type Guid</title><link>http://feeds.feedburner.com/~r/estoychev/~3/258205818/tip-rowfilter-with-in-operator-over-a-column-of-type-guid.aspx</link><pubDate>Wed, 26 Mar 2008 09:19:58 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6027862</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=6027862</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2008/03/26/tip-rowfilter-with-in-operator-over-a-column-of-type-guid.aspx#comments</comments><description>&lt;h4&gt;Case&lt;/h4&gt;  &lt;p&gt;Apply a &lt;font face="Courier New"&gt;RowFilter&lt;/font&gt; on a &lt;font face="Courier New"&gt;DataView&lt;/font&gt; which filters a column of type &lt;font face="Courier New"&gt;System.Guid&lt;/font&gt; and can contain a variable number of values.&lt;/p&gt;  &lt;p&gt;Example: &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;DataView &lt;/span&gt;dv = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataView&lt;/span&gt;();&lt;br /&gt;dv.RowFilter = &amp;quot;TypeId in ('&amp;lt;guid&amp;gt;', '&amp;lt;guid&amp;gt;', ...)&amp;quot;;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;where &lt;font face="Courier New"&gt;TypeId&lt;/font&gt; column is of a &lt;font face="Courier New"&gt;System.Guid&lt;/font&gt; type. As the number of values is variable it makes perfect sense to use the &lt;font face="Courier New"&gt;in&lt;/font&gt; operator.&lt;/p&gt;

&lt;h4&gt;The problem&lt;/h4&gt;

&lt;p&gt;When you are looking at this expression you may think this should be working as expected, i.e. the result should only contain the data where &lt;font face="Courier New"&gt;TypeId&lt;/font&gt; is in the specified values. In fact, if you run it you will get the following exception:&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New" color="#ff0000"&gt;Cannot perform '=' operation on System.Guid and System.String.&lt;/font&gt;&lt;/p&gt;

&lt;h4&gt;The Solution&lt;/h4&gt;

&lt;p&gt;To convert the &lt;font face="Courier New"&gt;String&lt;/font&gt; to &lt;font face="Courier New"&gt;Guid&lt;/font&gt; you should use the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx" target="_blank"&gt;&lt;font face="Courier New"&gt;Convert(&lt;em&gt;expression, type&lt;/em&gt;)&lt;/font&gt;&lt;/a&gt; method like this:&lt;/p&gt;

&lt;pre class="code"&gt;dv.RowFilter = &lt;span style="color: #a31515"&gt;&amp;quot;TypeId in (Convert('&amp;lt;guid&amp;gt;', 'System.Guid'), Convert('&amp;lt;guid&amp;gt;', 'System.Guid'), ...)&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6027862" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=AK4u5kf"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=AK4u5kf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=aRVf9XF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=aRVf9XF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=x1fowsF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=x1fowsF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=3ZKpIfF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=3ZKpIfF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=JriEHFf"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=JriEHFf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=bsD85VF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=bsD85VF" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2008/03/26/tip-rowfilter-with-in-operator-over-a-column-of-type-guid.aspx</feedburner:origLink></item><item><title>Tip: Get application based file path with ASP.NET</title><link>http://feeds.feedburner.com/~r/estoychev/~3/245752835/tip-get-application-based-file-path-with-asp-net.aspx</link><pubDate>Tue, 04 Mar 2008 22:01:12 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5915430</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=5915430</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2008/03/05/tip-get-application-based-file-path-with-asp-net.aspx#comments</comments><description>&lt;p&gt;Linking to a resource from a reusable control in different levels in your web app folder tree can be a tedious and not so obvious task. &lt;/p&gt;  &lt;p&gt;We have a number of tools in our bag that we can use: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;absolute paths - http://www.yoururl.com/a/b/c/page.ext - not acceptable for reusable components &lt;/li&gt;    &lt;li&gt;relative paths      &lt;ul&gt;       &lt;li&gt;current level based - a/b/c/page.ext - doesn't work for reusable components &lt;/li&gt;        &lt;li&gt;root based - /a/b/c/page.ext - that works good in some cases but not in every &lt;/li&gt;        &lt;li&gt;app based - ~/a/b/c/page.ext - perfect when you can use it &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;What's wrong with root based paths?&lt;/h2&gt;  &lt;p&gt;When you work on a project you often use built-in WebServer of the Visual Studio and your app runs on http://localhost:XXXX/. Everything seems to be working fine with the root based paths. Now it's time to deploy your app on a test machine. You deploy it on http://test/myBestApp/. Now all your root based paths are pointing to http://test/Page.ext instead of http://test/myBestApp/Page.ext. That's a good reason not to use root based paths.&lt;/p&gt;  &lt;h2&gt;~ (tilde)&lt;/h2&gt;  &lt;p&gt;That's a good solution that comes out of the box and takes care finding the root of your app. Ok, but what if need to build the URL on the fly like in this example:&lt;/p&gt;  &lt;pre class="code"&gt;~/Item.ext?id=&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt; Request.QueryString[ &lt;span style="color: #a31515"&gt;&amp;quot;id&amp;quot; &lt;/span&gt;] &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;This won't work if you put it in a Hyperlink like this:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HyperLink &lt;/span&gt;&lt;span style="color: red"&gt;ID &lt;/span&gt;&lt;span style="color: blue"&gt;= &amp;quot;hlnkItemDetails&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat &lt;/span&gt;&lt;span style="color: blue"&gt;= &amp;quot;server&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;NavigateUrl &lt;/span&gt;&lt;span style="color: blue"&gt;= '~/Item.ext?id=&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt; Request.QueryString[ &amp;quot;id&amp;quot; ] &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;' /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Don't think about changing the quotation marks. It won't work however you try.&lt;/p&gt;

&lt;h2&gt;The universal solution - Page.ResolveUrl&lt;/h2&gt;

&lt;p&gt;Now that's what can help you in every situation (or at least all cases I can think of). Think about this case: you have a custom control in ~/items/controls/ItemViewControl.ascx. This control is used in ~/Default.aspx and ~/items/Default.aspx. You need to link to ~/items/Item.aspx?id=&amp;lt;query string param&amp;gt; from ItemViewControl.ascx. You can't use ~ (tilde), root based, current folder relative or absolute path for some of the reasons written above. This is where Page.ResoulveUrl comes into help. You can build your link in this way:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;='&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt; String.Format( &amp;quot;{0}?id={1}&amp;quot;, Page.ResolveUrl( &amp;quot;~/items/Item.aspx&amp;quot; ), Request.QueryString[ &amp;quot;id&amp;quot; ] ) &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;' /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Yes, it is a bit complicated, but at least you won't be worried about broken links and they will work as expected wherever you put them.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5915430" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=W4k0fUf"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=W4k0fUf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=8p8tPlF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=8p8tPlF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=UbNIRNF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=UbNIRNF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=fmQGW3F"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=fmQGW3F" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=xohbaEf"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=xohbaEf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=nvgvaWF"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=nvgvaWF" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2008/03/05/tip-get-application-based-file-path-with-asp-net.aspx</feedburner:origLink></item><item><title>2008 Launch</title><link>http://feeds.feedburner.com/~r/estoychev/~3/242768170/2008-launch.aspx</link><pubDate>Thu, 28 Feb 2008 15:12:40 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5878071</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=5878071</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2008/02/28/2008-launch.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/emilstoichev/WindowsLiveWriter/2008Launch_F205/8f04d0a7-f17e-4146-9b93-59e0697c1936_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 0px 5px; border-left: 0px; border-bottom: 0px" height="188" alt="8f04d0a7-f17e-4146-9b93-59e0697c1936" src="http://weblogs.asp.net/blogs/emilstoichev/WindowsLiveWriter/2008Launch_F205/8f04d0a7-f17e-4146-9b93-59e0697c1936_thumb.jpg" width="557" border="0" /&gt;&lt;/a&gt; I've just registered for the 2008 Launch in Athens. I guess most of you are exciting about MIX08 now but I won't be able to join this event and I'll have to satisfy myself with the 2008 Launch and I hope with the REMIX. I'm sure it will be fun so if you are somewhere near Athens be sure to attend. The event is free of charge. Check out the sessions &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032369846&amp;amp;Culture=En-US" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5878071" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=fbidDxe"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=fbidDxe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=qOypjUE"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=qOypjUE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=yRLvarE"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=yRLvarE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=5z1VehE"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=5z1VehE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=iaG6Fne"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=iaG6Fne" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=3vbBLYE"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=3vbBLYE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2008/02/28/2008-launch.aspx</feedburner:origLink></item><item><title>Tip: How to get the client culture from an ASP.NET app</title><link>http://feeds.feedburner.com/~r/estoychev/~3/220383009/tip-how-to-get-the-client-culture-from-an-asp-net-app.aspx</link><pubDate>Mon, 21 Jan 2008 13:44:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5629540</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=5629540</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2008/01/21/tip-how-to-get-the-client-culture-from-an-asp-net-app.aspx#comments</comments><description>&lt;P&gt;I fall in a couple of situations where I needed to get the client’s culture from the server side in an ASP.NET application. I googled this and found only client side solutions, but I knew there was some way to get this information because the ASP.NET framework supports client based culture (through the &lt;EM&gt;(UI)Culture = "Auto"&lt;/EM&gt; in the page attributes and the &lt;EM&gt;globalization&lt;/EM&gt; section in the web.config). The only way I thought of getting the client culture was from the Request object. &lt;/P&gt;
&lt;P&gt;After examining the HTTP Headers collection I found the Accept-Language header. It contains information about the user's preferred languages. This is a sample Accept-Language header:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Accept-Language &lt;BR&gt;bg-BG,en-US;q=0.7,ar-BH;q=0.3&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The languages are explicitly defined in the browser and their order is determined. You are probably wondering what this q-thing means. According to the &lt;A href="http://rgall.com/rfcs/rfc3282.html" mce_href="http://rgall.com/rfcs/rfc3282.html"&gt;RFC 3282 (Content Language Headers)&lt;/A&gt; it specifies the language quality or in other words the language priority set in the client's browser. In the example above bg-BG (Bulgarian (Bulgaria) has highest priority then en-US (English (United States)) and the last preferred language is ar-BH (Arabic (Bahrain)). &lt;/P&gt;
&lt;P&gt;The Accept-Language header lists all languages set in the browser in a comma separated list which makes it easy to extract each language. &lt;/P&gt;
&lt;P&gt;From ASP.NET you can access this header using the Headers collection in the Request object - Request.Headers["Accept-Language"]. Then you can process it the way you like. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;UPDATE:&lt;BR&gt;&lt;/STRONG&gt;&lt;A class="" href="http://weblogs.asp.net/rajbk/" mce_href="http://weblogs.asp.net/rajbk/"&gt;Raj Kaimal&lt;/A&gt; gave a useful tip that instead of using Request.Headers["Accept-Language"] you can&amp;nbsp;simply use the HttpRequest.UserLanguages to get a sorted string array of client language preferences. Thanks Raj!&lt;/P&gt;
&lt;P&gt;I hope you find this tip useful.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5629540" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=omCsvBd"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=omCsvBd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=zLucDaD"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=zLucDaD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=RjY7qyD"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=RjY7qyD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=tSD4ACD"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=tSD4ACD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=59zMFDd"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=59zMFDd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=Q31r4GD"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=Q31r4GD" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/ASP.NET/default.aspx">ASP.NET</category><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2008/01/21/tip-how-to-get-the-client-culture-from-an-asp-net-app.aspx</feedburner:origLink></item><item><title>Have you heard about Microsoft Live Labs Volta?</title><link>http://feeds.feedburner.com/~r/estoychev/~3/199236797/have-you-heard-about-microsoft-live-labs-volta.aspx</link><pubDate>Wed, 12 Dec 2007 14:30:32 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5443976</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=5443976</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2007/12/12/have-you-heard-about-microsoft-live-labs-volta.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/emilstoichev/WindowsLiveWriter/HaveyouheardaboutVolta_E14C/logo-volta_2.png"&gt;&lt;img style="margin: 0px 10px 5px 0px" height="75" alt="logo-volta" src="http://weblogs.asp.net/blogs/emilstoichev/WindowsLiveWriter/HaveyouheardaboutVolta_E14C/logo-volta_thumb.png" width="189" align="left" border="0" /&gt; Volta&lt;/a&gt; is a toolkit that enables developers to build &lt;strong&gt;multi-tier web applications&lt;/strong&gt; by applying familiar techniques and patterns - namely &lt;strong&gt;.NET languages&lt;/strong&gt;, libraries and development tools. Volta is what many .NET web developers have been waiting so far, especially those who don't like JavaScript.&lt;/p&gt;  &lt;p&gt;At first I thought Volta is the Microsoft's answer to &lt;strong&gt;Google Web Toolkit&lt;/strong&gt; (GWT). Yes, on one hand it is, but on the other it provides a way more. Personally I've been wondering when the .NET world will have a similar toolset and now when it is a fact I'm sure a lot of developers will like it. &lt;/p&gt;  &lt;p&gt;Volta &lt;em&gt;is not &lt;/em&gt;only for web. Volta is to enable multi-tier and asynchronous programming via declarative attribution and MSIL to MSIL rewriting. By Volta you can import JavaScript libraries in .NET and that's one of the things that makes Volta important. There are great JavaScript libraries out there that now can be used in any ordinary .NET application - for example you can use the &lt;a href="http://www.microsoft.com/virtualearth/"&gt;Virtual Earth&lt;/a&gt; or &lt;a href="https://dev.live.com/livesearch/sdk/"&gt;Search&lt;/a&gt; libraries in your WinForms applications.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The main goal is to simplify the designing, building, deploying, testing, and debugging of distributed, multi-tier applications, while minimizing the amount of &amp;quot;new stuff&amp;quot; developers must learn. Volta leverages familiar, existing .NET compilers, tools, and libraries and extends them into the distributed realm.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I like that passage. I like the way Microsoft are trying to push the envelope.&lt;/p&gt;  &lt;p&gt;If you are interested go and check out the official &lt;a href="http://labs.live.com/volta/"&gt;Volta web site&lt;/a&gt; in the Microsoft Live labs. There is an available technical preview that you can &lt;a href="http://labs.live.com/volta/download/"&gt;download&lt;/a&gt; and play with. Also you can find samples included in the package. Remember to visit the &lt;a href="http://labs.live.com/volta/blog/"&gt;Volta Team Blog&lt;/a&gt; and to subscribe for their feed to stay up to date with the latest bits.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bd2b3467-47db-44b9-95f7-08a5df1e2535" 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/Volta" rel="tag"&gt;Volta&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Web%202.0" rel="tag"&gt;Web 2.0&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5443976" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=UgWsPFc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=UgWsPFc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=X63H8JC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=X63H8JC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=GNT5NHC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=GNT5NHC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=yWHssaC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=yWHssaC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=yQrUccc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=yQrUccc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=f9dzxAC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=f9dzxAC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2007/12/12/have-you-heard-about-microsoft-live-labs-volta.aspx</feedburner:origLink></item><item><title>Consume data from Astoria service using the Astoria Silverlight API</title><link>http://feeds.feedburner.com/~r/estoychev/~3/191859309/consume-data-from-an-astoria-service-using-the-astoria-silverlight-api.aspx</link><pubDate>Wed, 28 Nov 2007 12:50:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5364332</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=5364332</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2007/11/28/consume-data-from-an-astoria-service-using-the-astoria-silverlight-api.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;In my &lt;A class="" href="http://weblogs.asp.net/emilstoichev/archive/2007/11/20/how-to-build-simple-line-chart-with-silverlight-1-1.aspx" mce_href="http://weblogs.asp.net/emilstoichev/archive/2007/11/20/how-to-build-simple-line-chart-with-silverlight-1-1.aspx"&gt;previous post&lt;/A&gt; I referred you to a &lt;A class="" href="http://www.silverlightshow.net/items/2314.aspx" mce_href="http://www.silverlightshow.net/items/2314.aspx"&gt;tutorial how to make&amp;nbsp;a simple line chart with Silverlight 1.1&lt;/A&gt;.&amp;nbsp;With this&amp;nbsp;chart we were&amp;nbsp;able to load data from an exported Excel XML Spreadsheet or from a XML serialized list of Point objects. I thought it would be great if the chart can consume data from a web service and thus stay updated without any user intervention. I decided to use Astoria service - it is new, unexplored, easy to understand and&amp;nbsp;to&amp;nbsp;use, &lt;STRONG&gt;the&amp;nbsp;payload is low&lt;/STRONG&gt;, etc. I believe that Astoria will be used by a lot&amp;nbsp;AJAX-enabled and rich internet applications. If you are not familiar with Astoria go to its &lt;A class="" href="http://astoria.mslivelabs.com/" mce_href="http://astoria.mslivelabs.com/"&gt;official labs site &lt;/A&gt;and learn! The technology is still in an early development phase and there is yet only a CTP version but&amp;nbsp;you can find&amp;nbsp;enough info to get started. Also there is a couple of useful blogs: &lt;A class="" href="http://blogs.msdn.com/astoriateam/default.aspx" mce_href="http://blogs.msdn.com/astoriateam/default.aspx"&gt;Project Astoria Team Blog&lt;/A&gt;, &lt;A class="" href="http://blogs.msdn.com/mflasko/" mce_href="http://blogs.msdn.com/mflasko/"&gt;Mike Flasko's Blog&lt;/A&gt;, &lt;A class="" href="http://blogs.msdn.com/pablo/" mce_href="http://blogs.msdn.com/pablo/"&gt;Pablo Castro's blog&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Yesterday I continued my series of articles regarding how to build a simple line chart with Silverlight 1.1 (&lt;A class="" href="http://www.silverlightshow.net/items/2394.aspx" mce_href="http://www.silverlightshow.net/items/2394.aspx"&gt;read here&lt;/A&gt;). I explained how to &lt;STRONG&gt;make an ADO.NET Entity Model&lt;/STRONG&gt;, create &lt;STRONG&gt;Astoria service &lt;/STRONG&gt;and then &lt;STRONG&gt;consume it from Silverlight&lt;/STRONG&gt;. The sample chart&amp;nbsp;loads data from a Northwind database and then represents it in a line chart. It is a&amp;nbsp;pretty straight-forward way to keep the chart alive. The &lt;STRONG&gt;source code&amp;nbsp;is also&amp;nbsp;included &lt;/STRONG&gt;(ASP.NET 3.5 app + silverlight control library + silverlight project) so you can try and use it for your needs. &lt;EM&gt;Prerequisites&lt;/EM&gt;: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=B98A61BA-99B0-40B7-AB6E-5386A2B94217&amp;amp;displaylang=en"&gt;Visual Studio 2008 Beta2&lt;/A&gt;, the &lt;A href="http://go.microsoft.com/fwlink/?LinkID=89145&amp;amp;clcid=0x409"&gt;Silverlight 1.1 Alpha Tools&lt;/A&gt;, the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0FA1413C-CB55-4577-960E-0F3491847F58&amp;amp;displaylang=en"&gt;Astoria toolkit&lt;/A&gt; (VS2008 Beta2 Refresh) and the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F1ADC5D1-A42E-40A6-A68C-A42EE11186F7&amp;amp;displaylang=en"&gt;ADO.NET Entity Framework Beta 2&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5364332" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=NjpUqGc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=NjpUqGc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=zWP5eRC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=zWP5eRC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=aIZIXoC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=aIZIXoC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=UpPaOkC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=UpPaOkC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=cy7nAEc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=cy7nAEc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=RAifQhC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=RAifQhC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/Astoria/default.aspx">Astoria</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/WCF/default.aspx">WCF</category><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2007/11/28/consume-data-from-an-astoria-service-using-the-astoria-silverlight-api.aspx</feedburner:origLink></item><item><title>How to build simple line chart with Silverlight 1.1</title><link>http://feeds.feedburner.com/~r/estoychev/~3/187796389/how-to-build-simple-line-chart-with-silverlight-1-1.aspx</link><pubDate>Tue, 20 Nov 2007 16:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5296550</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=5296550</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2007/11/20/how-to-build-simple-line-chart-with-silverlight-1-1.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Today I've published an article on &lt;A class="" title="How to build a line chart with Silverlight 1.1" href="http://www.silverlightshow.net/items/2314.aspx" mce_href="http://www.silverlightshow.net/items/2314.aspx"&gt;how to build a line chart control with Silverlight 1.1&lt;/A&gt; in SilverlightShow.net.&amp;nbsp;The chart&amp;nbsp;allows you to load&amp;nbsp;data from an exported Excel XML Spreadsheet and a custom XML serialized array of points. The&amp;nbsp;goal of the article is to give a Silverlight solution of how to visualize data in a line chart and let non-technical staff maintain it.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The article shows how to use basic framework elements and transformations, how to load XML in Silverlight, how to create and include in ASP.NET project a Silverlight class library and Silverlight project.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The full source code is included in the article so you can download and examine it yourself.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Check out the &lt;A class="" href="http://www.silverlightshow.net/showcase/SimpleSilverlightLineChart.html" mce_href="http://www.silverlightshow.net/showcase/SimpleSilverlightLineChart.html"&gt;live demo&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="Simple Silverlight Line Chart" style="WIDTH: 620px; HEIGHT: 325px" height=325 alt="Simple Silverlight Line Chart" src="http://www.silverlightshow.net/storage/userfiles/samplechart(1).png" width=620 mce_src="http://www.silverlightshow.net/storage/userfiles/samplechart(1).png"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5296550" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=G3biR0c"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=G3biR0c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=2Qw7zrC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=2Qw7zrC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=y7bNeIC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=y7bNeIC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=Qpr3hXC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=Qpr3hXC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=TFbRWQc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=TFbRWQc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=KfwmWjC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=KfwmWjC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/Silverlight/default.aspx">Silverlight</category><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2007/11/20/how-to-build-simple-line-chart-with-silverlight-1-1.aspx</feedburner:origLink></item><item><title>SilverlightShow.net Beta2 Launched!</title><link>http://feeds.feedburner.com/~r/estoychev/~3/175256257/silverlightshow-net-beta2-launched.aspx</link><pubDate>Thu, 25 Oct 2007 21:02:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:4750737</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=4750737</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2007/10/26/silverlightshow-net-beta2-launched.aspx#comments</comments><description>&lt;P&gt;About 2 months ago I and a few&amp;nbsp;of my colleagues started a Silverlight community site with the hope to be a trustworthy source for Silverlight content and to give our visitors the best we can offer. &lt;A href="http://www.silverlightshow.net/" mce_href="http://www.silverlightshow.net/"&gt;SilverlightShow&lt;/A&gt; has been developed as an internal project, we cannot offer that much functionality in this short time and limited budget. With this release I think we did a good job, though. The thing I'm mostly happy about is the &lt;A href="http://www.silverlightshow.net/Shows.aspx" mce_href="http://www.silverlightshow.net/Shows.aspx"&gt;interviews we took&lt;/A&gt; from some really cool guys like Chad Hower a.k.a Kudzu (MVP, &lt;SPAN style="COLOR: #303030"&gt;Regional Director Adviser for Microsoft MEA)&lt;/SPAN&gt;, Lino Tadros (MVP, CEO Falafel Software), Todd Anglin (MVP, Telerik Technical Evangelist) and Xavier Lemoine ( Netika Technical Evangelist). It is so easy to talk with these guys – they are so experienced and no matter what you ask them, they can talk for hours. I really hope you like the interviews and learn something. &lt;/P&gt;
&lt;P&gt;This release also includes &lt;A href="http://www.silverlightshow.net/Showcase.aspx" mce_href="http://www.silverlightshow.net/Showcase.aspx"&gt;Showcase&lt;/A&gt;, &lt;A href="http://www.silverlightshow.net/GetStarted.aspx" mce_href="http://www.silverlightshow.net/GetStarted.aspx"&gt;Get Started&lt;/A&gt; and &lt;A href="http://www.silverlightshow.net/Events.aspx" mce_href="http://www.silverlightshow.net/Events.aspx"&gt;Event&lt;/A&gt; sections. With all this content – news, articles, shows (interviews), showcase and events – SilverlightShow.net now offers all you need gathered together in&amp;nbsp;well organized way for you&amp;nbsp;to stay tuned for Silverlight. If you are interested in this technology, I'd highly&amp;nbsp;recommend you to &lt;A href="http://www.silverlightshow.net/Registration.aspx" mce_href="http://www.silverlightshow.net/Registration.aspx"&gt;join the community&lt;/A&gt; and subscribe for the feeds. &lt;/P&gt;
&lt;P&gt;Of course there is still a lot to be done for the community and we will keep contributing and adding new features. It's just a matter of time. So stay in touch and I promise we won't disappoint you ;) We are also looking for a partnership with other communities and users ready to contribute, so send us an email at support [at] silverlightshow [dot] net if you have something on your mind. &lt;/P&gt;
&lt;P&gt;I received a&amp;nbsp;couple of emails asking what CMS we use for SilverlightShow.net. We &lt;EM&gt;don't&lt;/EM&gt; use third-party CMS. As this is an ASP.NET blog I'll say a couple of things for the design of SilverlightShow.net and what problems we faced during development. &lt;/P&gt;
&lt;P&gt;For an experienced ASP.NET developer this project is not such an&amp;nbsp;interesting thing&amp;nbsp;as it is almost just a CRUD (create, retrieve, update, delete) application without any complex logic. It is&amp;nbsp;entirely based on something we call "a Resource item" which is the object behind news, article, show, etc. The resource item has common fields as Title, Description, Author, etc. Then if a content item has something specific, like a podcast which has a video file, a new business object that inherits ResourceItem is created with its specific properties. The object model completely reflects the database design. That approach makes it super easy to organize the data and display it. &lt;/P&gt;
&lt;P&gt;We use a couple of third-party controls and frameworks like &lt;A href="http://www.codeproject.com/aspnet/ASPNETPagerControl.asp" mce_href="http://www.codeproject.com/aspnet/ASPNETPagerControl.asp"&gt;ASP.NET Pager&lt;/A&gt; – for paging result items, &lt;A href="http://www.raboof.com/projects/Elmah/" mce_href="http://www.raboof.com/projects/Elmah/"&gt;ELMAH&lt;/A&gt; for error logging, the &lt;A href="http://www.asp.net/ajax/ajaxcontroltoolkit/" mce_href="http://www.asp.net/ajax/ajaxcontroltoolkit/"&gt;ASP.NET AJAX Control Toolkit&lt;/A&gt;, ASP.NET Futures (the media control), the &lt;A href="http://www.codeplex.com/Argotic" mce_href="http://www.codeplex.com/Argotic"&gt;Argotic Syndication Framework&lt;/A&gt;, &lt;A href="http://www.codeplex.com/subkismet" mce_href="http://www.codeplex.com/subkismet"&gt;Subkismet&lt;/A&gt; – the cure for comment spam, &lt;A href="http://www.urlrewriter.net/" mce_href="http://www.urlrewriter.net/"&gt;URLRewriter.NET&lt;/A&gt;, etc. For the time being&amp;nbsp;I'm preparing a blog about the custom controls, frameworks and tools I use in my everyday development and there I'll tell you more about them. &lt;/P&gt;
&lt;P&gt;If you want to learn more what is behind SilverlightShow let me know.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4750737" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=YSvH9yc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=YSvH9yc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=uDLEqEC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=uDLEqEC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=jfeCRMC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=jfeCRMC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=RYQ1NrC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=RYQ1NrC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=rJfRhfc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=rJfRhfc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=tfCL2WC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=tfCL2WC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/SilverlightShow/default.aspx">SilverlightShow</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/Silverlight/default.aspx">Silverlight</category><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2007/10/26/silverlightshow-net-beta2-launched.aspx</feedburner:origLink></item><item><title>Thoughts on the ASP.NET ViewState</title><link>http://feeds.feedburner.com/~r/estoychev/~3/167107915/thoughts-on-the-asp-net-viewstate.aspx</link><pubDate>Mon, 08 Oct 2007 20:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:4496697</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>9</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=4496697</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2007/10/08/thoughts-on-the-asp-net-viewstate.aspx#comments</comments><description>&lt;P&gt;Last week I've attended the &lt;A href="http://www.devreach.com/" mce_href="http://www.devreach.com/"&gt;DevReach&lt;/A&gt; conference in Sofia, Bulgaria. It is one of the few international events presented in South Eastern Europe, but a lot of famous international speakers took part&amp;nbsp;in it and I would say it was a good conference. I met a number of well-known faces from the .NET community worldwide and I also had the chance to interview &lt;A href="http://www.linotadros.com/" mce_href="http://www.linotadros.com/"&gt;Lino Tadros&lt;/A&gt;, &lt;A href="http://www.kudzuworld.com/" mce_href="http://www.kudzuworld.com/"&gt;Chad Hower&lt;/A&gt; a.k.a Kudzu and &lt;A href="http://telerikwatch.com/" mce_href="http://telerikwatch.com/"&gt;Todd Anglin&lt;/A&gt; (big thanks guys!) for &lt;A href="http://www.silverlightshow.net/" mce_href="http://www.silverlightshow.net"&gt;SilverlightShow.net&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;One of the sessions I attended was about &lt;A href="http://www.devreach.com/Event/Sessions.aspx" mce_href="http://www.devreach.com/Event/Sessions.aspx"&gt;Tips &amp;amp; Tricks for Managing ViewState&lt;/A&gt; (by Todd Anglin). It made me acquire a deeper knowledge on this 'magic' StateBag. A lot of developers, not only junior, are confused about how the ViewState actually works. If you google about ViewState, you will find a couple of articles that explain the 'magic' – some of them good, some of them not so. I strongly recommend reading the blog of &lt;A href="http://weblogs.asp.net/infinitiesloop/default.aspx" mce_href="http://weblogs.asp.net/infinitiesloop/default.aspx"&gt;Dave Reed&lt;/A&gt; (Infinities Loop) &lt;A href="http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx" mce_href="http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx"&gt;TRULY Understanding ViewState&lt;/A&gt; if you want to &lt;EM&gt;truly&lt;/EM&gt; understand it ;) &lt;/P&gt;
&lt;P&gt;The thing in Todd Anglin's session which provoked me to blog about&amp;nbsp;is the way he programmatically set control properties – in the PreInit stage. Just to give you an overview of the ViewState lifecycle, I'll say that it is loaded in the Init stage and this is exactly where &lt;SPAN style="FONT-FAMILY: Courier New"&gt;TrackViewState()&lt;/SPAN&gt; is called. After that, if a ViewState value is changed, it is considered dirty and &lt;SPAN style="FONT-FAMILY: Courier New"&gt;StateBag.SaveViewState()&lt;/SPAN&gt; will save and return the new value when its state is requested. Having this in mind you can think of changing control properties at the PreInit event. Yes, that is great place. They won't be marked as dirty because &lt;SPAN style="FONT-FAMILY: Courier New"&gt;TrackViewState()&lt;/SPAN&gt; is not still called. &lt;/P&gt;
&lt;P&gt;So if you have a code like the following your ViewState won't suffer. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; OnPreInit( &lt;SPAN style="COLOR: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e ) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;litMessage.Text = &lt;SPAN style="COLOR: #a31515"&gt;"Hey, my ViewState is less than before! Ha!"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.OnPreInit( e ); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Just as simple as that. Then, why do we continue to see lot of ASP.NET tutorials, articles, blogs, etc. that initialize control properties at the Load event? Frequently I see code like this: &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Page_Load( &lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e ) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; ( !IsPostBack ) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;gridData.DataSource = myDataCollection; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;gridData.DataBind(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;What is the size of myDataCollection? 10kb? 20kb? 120kb? Depends on the data. But why, even if it is 10bytes don't you put it in the &lt;EM&gt;PreInit&lt;/EM&gt; event? Hey, when we are talking about public web applications, that matters! Notice that the next time you set default values, bind data, etc. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;In case you use a MasterPage you can't use this tip. MasterPage is treated like a control in the ContentPage and all the controls on the page aren't still initialized at this stage. The simplest thing you can do is to wire up the Init event of the control and there to set the properties you want. Of course, you can use this trick even you have no MasterPage but you don't want to wire up the Init event of all 100 controls you have on the page, do you? ;) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;As this is my first contribution to the ASP.NET community, I hope I've helped you guys and I'll be glad to have your feedback.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4496697" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=48kcgCc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=48kcgCc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=rL5wC9C"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=rL5wC9C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=fLgi2TC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=fLgi2TC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=v2IXR2C"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=v2IXR2C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=jJPGOmc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=jJPGOmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=fZ0h2WC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=fZ0h2WC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/ViewState/default.aspx">ViewState</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/emilstoichev/archive/tags/.NET/default.aspx">.NET</category><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2007/10/08/thoughts-on-the-asp-net-viewstate.aspx</feedburner:origLink></item><item><title>Introducing Emil Stoichev</title><link>http://feeds.feedburner.com/~r/estoychev/~3/162698978/introducing-emil-stoichev.aspx</link><pubDate>Fri, 28 Sep 2007 22:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:4220106</guid><dc:creator>Emil Stoichev</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/emilstoichev/rsscomments.aspx?PostID=4220106</wfw:commentRss><comments>http://weblogs.asp.net/emilstoichev/archive/2007/09/29/introducing-emil-stoichev.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Hey it is my pleasure to have the opportunity to blog alongside the&amp;nbsp;asp.net team&amp;nbsp;and to be able to share my knowledge directly from the community blogs (thanks, &lt;A class="" href="http://joeon.net/" mce_href="http://joeon.net/"&gt;Joe&lt;/A&gt;!). &lt;/P&gt;
&lt;P mce_keep="true"&gt;For the time being I'm a senior web developer at &lt;A class="" href="http://www.completit.com/" mce_href="http://www.completit.com"&gt;CompletIT&lt;/A&gt;.&amp;nbsp;I&amp;nbsp;and&amp;nbsp;my team-mates&amp;nbsp;successfully&amp;nbsp;invented a few private enterprise products in the&amp;nbsp;domain of paramedical software. It is my passion to work on web 2.0 projects and to use cutting edge technologies.&amp;nbsp;Trying to be&amp;nbsp;on the top I spend hours every day&amp;nbsp;reading blogs and contributing to .NET and RIA communities. Besides, I like speaking at seminars and&amp;nbsp;I am looking forward to the next.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Lately I've been in charge of forming a Silverlight community (of course, my colleagues helped a lot ;). That results in the recent beta launch of&amp;nbsp;&lt;A class="" href="http://www.silverlightshow.net/" mce_href="http://www.silverlightshow.net"&gt;SilverlightShow.net&lt;/A&gt; - an independent free open community.&lt;/P&gt;
&lt;P mce_keep="true"&gt;This blog will be entirely focused on my day-to-day experience with ASP.NET, AJAX, Silverlight, IIS and .NET in common. Also, I experiment with LINQ, Astoria and Acropolis, so stay tuned and I'll do my best to share my knowledge with you.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=4220106" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/estoychev?a=Cpvxw6c"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=Cpvxw6c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=nuPvZVC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=nuPvZVC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=1vB9QmC"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=1vB9QmC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=y9qJd4C"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=y9qJd4C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=eV5r7vc"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=eV5r7vc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/estoychev?a=PU3rv4C"&gt;&lt;img src="http://feeds.feedburner.com/~f/estoychev?i=PU3rv4C" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><feedburner:origLink>http://weblogs.asp.net/emilstoichev/archive/2007/09/29/introducing-emil-stoichev.aspx</feedburner:origLink></item></channel></rss>
