<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://stuartmanning.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Stuart Manning</title><link>http://stuartmanning.com/blogs/</link><description>Belfast Web Development | C# | ASP.NET | CCS | Ajax | LINQ</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Client Side problem with maximum characters for multiline asp:textbox</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/04/09/asp-textbox-client-side-problem-with-maximum-characters.aspx</link><pubDate>Wed, 09 Apr 2008 10:01:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:41</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I was asked recently as to how best handle client side cut &amp;amp; pastes using asp:textbox. The main problem was when the TextMode is set to multiline the MaxLenght parameter is ignored.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Client side: JavaScript solution&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;function&lt;/span&gt; textCounter(field, countfield, maxlimit) 
{
  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;var&lt;/span&gt; thisfield &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; $get(field);
  &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;var&lt;/span&gt; counter &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; $get(countfield);
  
   &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;if&lt;/span&gt; (thisfield.value.&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;length&lt;/span&gt; &amp;gt; maxlimit)
        thisfield.value &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; thisfield.value.&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;substring&lt;/span&gt;(0, maxlimit);
    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;else&lt;/span&gt;
        counter.innerHTML &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; maxlimit &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;-&lt;/span&gt; thisfield.value.&lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;length&lt;/span&gt;;
}&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Notice $get. This is the dom equivelent to document.getElementById courtsey of the asp.net ajax javascript client library. http://asp.net/AJAX/Documentation/Live/ClientReference/Global/GetShortCutMethod.aspx &lt;/p&gt;
&lt;p&gt;$get is interchangable with document.getElementById.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Client&amp;nbsp; side: ASP.NET&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="txt_headline"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;runat&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="server"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;MaxLength&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="50"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;TextMode&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ToolTip&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="Please enter only 50 chars"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Width&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="300px"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;


&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;span&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;id&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="count_headline"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;style&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="font-weight: bold"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;50&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;span&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt; characters&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To get this code working we need to bind the form attributes onKeyDown, onKeyUp, onChange&lt;/p&gt;
&lt;p&gt;Importantly, we use onChange to catch our paste function&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Server Side C#&lt;/b&gt;&lt;/p&gt;&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;protected&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;object&lt;/span&gt; sender, EventArgs e) 


{


      textcounter(); &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;//call to bind attributes&lt;/span&gt;


}


&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;private&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; textcounter()


    {


        &lt;span style="color: Green;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;//validation&lt;/span&gt;


        txt_headline.Attributes.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"onKeyDown"&lt;/span&gt;, &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"j a v a s c r i p t:textCounter('"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; txt_headline.ClientID &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"', 'count_headline', 50);"&lt;/span&gt;);


        txt_headline.Attributes.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"onKeyUp"&lt;/span&gt;, &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"j a v a s c r i p t:textCounter('"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; txt_headline.ClientID &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"', 'count_headline', 50);"&lt;/span&gt;);


        txt_headline.Attributes.Add(&lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"onChange"&lt;/span&gt;, &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"j a v a s c r i p t:textCounter('"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; txt_headline.ClientID &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;+&lt;/span&gt; &lt;span style="color: #666666;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"', 'count_headline', 50);"&lt;/span&gt;);      


    }&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Please replace j a v a s c r i p t with javascript in above example&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now, when we run our colution we will have a text counter &amp;amp; we will also capture paste events to lock out string longer than we require. We are capturing the changes after KeyDown, KeyUp and importantly OnChange (cut &amp;amp; paste)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Futher enchancements&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;By default, when I create a simple form I would expressively as validation&lt;/p&gt;
&lt;p&gt;&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;b&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;


&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;asp:TextBox&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="txt_headline"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;runat&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="server"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;MaxLength&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="50"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;TextMode&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ToolTip&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="Please enter only 50 chars"&lt;/span&gt;


                            &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Width&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="300px"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;


                        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;span&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;id&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="count_headline"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;style&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="font-weight: bold"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;50&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;span&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt; characters&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;asp:RequiredFieldValidator&lt;/span&gt;


                            &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="RequiredFieldValidator1"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;runat&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="server"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="txt_headline"&lt;/span&gt;


                            &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Display&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="Dynamic"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="&amp;lt;br /&amp;gt;Headline Required!"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;


                        &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;asp:RegularExpressionValidator&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="RegularExpressionValidator3"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;runat&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="server"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="txt_headline"&lt;/span&gt;


                            &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Display&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="Dynamic"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="&amp;lt;br /&amp;gt;Headline cannot contain &amp;lt; or &amp;gt;"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ValidationExpression&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="[^&amp;lt;&amp;gt;]*"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To enrich this solution for simple form why not use ValidatorCallOutExtender as documented &lt;/p&gt;
&lt;p&gt;http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ValidatorCallout/ValidatorCallout.aspx&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;pre style="overflow: scroll; background-color: #f2f2f2;"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;asp:RegularExpressionValidator&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="RegularExpressionValidator1"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;runat&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="server"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="txt_headline"&lt;/span&gt;  &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Display&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="Dynamic"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="&amp;lt;br /&amp;gt;Headline cannot contain &amp;lt; or &amp;gt;"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ValidationExpression&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="[^&amp;lt;&amp;gt;]*"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;


&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: Maroon;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;cc1:ValidatorCalloutExtender&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="txt_headline "&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;runat&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="server"&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;TargetControlID&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;="RequiredFieldValidator1"&lt;/span&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This requires the use of the AjaxControlKit to be added to you project, and brings much of the rich form interaction we have come to expect. &lt;/p&gt;
&lt;p&gt;This article, however does not exclude the idea of good server side validation. Never expect that your user relies on JavaScript to validate. Personally I add universal validation to my entity class saving the labourous task of repeatitly importing/writing validation routines. But that is for another blog.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=41" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/code/default.aspx">code</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/asp_3A00_textbox/default.aspx">asp:textbox</category></item><item><title>Project Time Tracking - TimePanic</title><link>http://stuartmanning.com/blogs/web-development/archive/2008/04/01/project-time-tracking-timepanic.aspx</link><pubDate>Tue, 01 Apr 2008 19:20:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:39</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;I would just like to say thanks to Lionel Spohr for the great time tracking product TimePanic. I originally came across this product a few years ago when reading an article on the Guardian.co.uk on low-cost time management software.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;TimePanic is a great low-cost solution for individual time tracking (39 euros) and is available for Windows, USB Drives and Pocket PC.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;a href="http://www.timepanic.com/english/index.html"&gt;http://www.timepanic.com/english/index.html&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;font face="Calibri" size="3"&gt;Check out the product.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=39" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/web-development/archive/tags/Products/default.aspx">Products</category></item><item><title>Windows Server 2008 &amp; IIS7 - Live Project</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/04/01/windows-server-2008-amp-iis7-live-project.aspx</link><pubDate>Tue, 01 Apr 2008 15:17:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:38</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Just a quick note that I have started on pilot of Windows Server 2008 &amp;amp; IIS. Installation in test server was extremely easy and by default old IIS projects where migrated on launch. Installation was &amp;lt; 30 mins. &lt;/p&gt;
&lt;p&gt;Addition of .NET 3.0 and IIS from user environment was a breeze, and IIS immediately imported my test site from previous test server with no questions asked.&lt;/p&gt;
&lt;p&gt;&lt;img height="588" alt="IIS7" src="http://www.stuartmanning.com/images/iis7.jpg" width="960" border="0" /&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=38" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/IIS7/default.aspx">IIS7</category></item><item><title>Outlook 2007 - Vista 64 Problem -- Task Reminder Fail -- "Cannot open your default e-mail folders." "Failed to initialise object"</title><link>http://stuartmanning.com/blogs/general/archive/2008/03/27/outlook-2007-vista-64-problem-task-reminder-fail-quot-cannot-open-your-default-e-mail-folders-quot-quot-failed-to-initialise-object-quot.aspx</link><pubDate>Thu, 27 Mar 2008 17:17:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:37</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ran into a little problem with Outlook 2007 today. Since migrating my PST from another machine it no longer would run the &amp;quot;Task Reminder&amp;quot;. This was a bane to me as can be a little scattered brained at times at need to remind myself to do things... &amp;quot;call person x&amp;quot;, &amp;quot;invoice x&amp;quot;, &amp;quot;eat lunch&amp;quot;..&lt;/p&gt;
&lt;p&gt;I tried uninstalling/re-installing Outlook and Office several times, but each fresh install would look for my old pst &amp;lt;- which probally created the problem in the first place&lt;/p&gt;
&lt;p&gt;I was, however able to resolve the problem. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;re-attached my old pst [error prevailed]&lt;/li&gt;
&lt;li&gt;run outlook.exe /promptimportprf \\localfolder\outlook.prf&lt;/li&gt;
&lt;li&gt;click ok at prompt&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Problem solved, the &amp;quot;failed to called object&amp;quot; in the task schedule was a well commented problem on various sites.&lt;/p&gt;
&lt;p&gt;Glad to have it fixed now [sans 2hrs work-time].&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=37" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/general/archive/tags/Outlook+2007/default.aspx">Outlook 2007</category></item><item><title>AjaxToolkit - problems rendering in VS2008 - eg. TabContainer</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/03/27/ajaxtoolkit-problems-rendering-in-vs2008-eg-tabcontainer.aspx</link><pubDate>Thu, 27 Mar 2008 11:35:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:36</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Never fear, if you like me are having a few problems with the AjaxControl toolkit after installing the VS2008 hotfix, then you can still get VS2005 express editions @ &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/express/aa975050.aspx"&gt;http://msdn2.microsoft.com/en-us/express/aa975050.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Link provides downloads for complete express range and required SP1 where required&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=36" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET+AJAX/default.aspx">ASP.NET AJAX</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/VS+2005/default.aspx">VS 2005</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/VS+2008/default.aspx">VS 2008</category></item><item><title>LINQ RSS Writer</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/03/26/linq-rss-writer.aspx</link><pubDate>Wed, 26 Mar 2008 14:19:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:35</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;LINQ makes everyday tasks a joy and not a chore. This simple code example was implemented and deployed on &lt;a href="http://www.causewaydesign.co.uk/"&gt;http://www.causewaydesign.co.uk/&lt;/a&gt;&amp;nbsp;in 15 mins.&lt;/p&gt;&lt;pre class="html:collapse"&gt;using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.ServiceModel.Syndication;
using System.Xml;
using System.Collections.Generic;
using System.Collections.ObjectModel;


public partial class rss : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        DataClassesDataContext dataContext = new DataClassesDataContext();



        // Select data

        var itemsQuery = from post in dataContext.tbl_causeway_news
                         orderby post.news_date descending

                         select new

                         {

                             post.news_id,

                             post.news_title,

                             post.news_text,

                             post.news_date,

                         };



        // Prepare response

        Response.Buffer = false;

        Response.Clear();

        Response.ContentType = &amp;quot;application/xml&amp;quot;;



        // Create an XmlWriter to write the feed into it

        using (XmlWriter writer = XmlWriter.Create(Response.OutputStream))
        {

            // Set the feed properties

            SyndicationFeed feed = new SyndicationFeed

                (&amp;quot;Stuart Manning&amp;quot;,

                &amp;quot;Causeway Design - Web Development, Belfast, Northern Ireland&amp;quot;,

                new Uri(&amp;quot;http://www.causewaydesign.co.uk&amp;quot;));



            // Add authors

            feed.Authors.Add(new SyndicationPerson

                (&amp;quot;info@causewaydesign.co.uk&amp;quot;,

                &amp;quot;Stuart Manning&amp;quot;,

                &amp;quot;http://www.causewaydesign.co.uk&amp;quot;));







            // Set copyright

            feed.Copyright = new TextSyndicationContent

                (&amp;quot;© Copyright 2005-&amp;quot;+DateTime.Now.Year.ToString()+&amp;quot; Causeway Design&amp;quot;);



            // Set generator

            feed.Generator = &amp;quot;Causeway Design RSS Generator&amp;quot;;



            // Set language

            feed.Language = &amp;quot;en-GB&amp;quot;;



            // Add post items

            List items = new List();

            foreach (var Post in itemsQuery)
            {

                SyndicationItem item = new SyndicationItem();

                item.Id = Post.news_id.ToString();

                item.Title = TextSyndicationContent.CreatePlaintextContent(Post.news_title);

                item.Content = SyndicationContent.CreateXhtmlContent(Post.news_text);

                item.PublishDate = Post.news_date.Value.ToUniversalTime();

                //item.Categories.Add(new SyndicationCategory(Post.Category));



                items.Add(item);

            }

            feed.Items = items;



            // Write the feed to output

            Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed);

            rssFormatter.WriteTo(writer);



            writer.Flush();

        }

        Response.End();

    }
}





&lt;/pre&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=35" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/RSS/default.aspx">RSS</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/RSS+Writer/default.aspx">RSS Writer</category></item><item><title>Gasta White Label Update...</title><link>http://stuartmanning.com/blogs/belfast/archive/2008/03/26/gasta-white-label-update.aspx</link><pubDate>Wed, 26 Mar 2008 12:17:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:34</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Gasta is super excited by the interest in our White Label Search and Ad platform. Recently Francis Higgins (Commercial Director @ Gasta) announced that our White Label was now on trial with several high profile clients.&lt;/p&gt;
&lt;p&gt;Features.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Branded search for Web, Video, &amp;amp; Images 
&lt;li&gt;Web 2.0 Social Bookmarking tools 
&lt;li&gt;100% Retained Advertisement revenue from ad partners including Google, Yahoo, MIVA, ASK &amp;amp; Looksmart 
&lt;li&gt;GeoTargetted Ad Platform 
&lt;li&gt;Multi-site configuration and integration options 
&lt;li&gt;High Search Visibility 
&lt;li&gt;Multilanguage support&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;As a test case we created Gasta.cn using only our white label search engine on February 12th 2008, as of 26th March the site is indexed on Google with 13,698 pages and receives 30,000+ searches per day. Our solution deployed on Gasta.cn is growing at vastly accelerated rate.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.gasta.com/"&gt;http://www.gasta.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=34" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/belfast/archive/tags/Gasta/default.aspx">Gasta</category></item><item><title>Spam Catch without Captcha - Comment on article by Nannette Thacker</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/03/19/spam-catch-without-captcha-comment-on-article-by-nannette-thacker.aspx</link><pubDate>Wed, 19 Mar 2008 17:53:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:33</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Nannette Thacker post an article on &amp;quot;Spam Catch without Captcha&amp;quot;. &lt;a href="http://weblogs.asp.net/nannettethacker/archive/2008/03/16/spam-catch-without-captcha.aspx"&gt;http://weblogs.asp.net/nannettethacker/archive/2008/03/16/spam-catch-without-captcha.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;His idea is to use a hidden field that is irresistible to spam bots.&lt;/p&gt;
&lt;p&gt;This is a similar trick that I also use to eliminate spam, where by i place a textbox with a label inside the form. If your doing this, add a little accessibility to the solution.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ASP.NET&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&amp;quot;position: absolute; left: -1000px&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Label ID=&amp;quot;lbl_spam&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Required, assuming that only an automated bot will see this. Elsewise, please ignore&amp;quot;&amp;gt;&amp;lt;/asp:Label&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TextBox ID=&amp;quot;txt_spam&amp;quot; TextMode=&amp;quot;MultiLine&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;For everyone else:-&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&amp;quot;position: absolute; left: -1000px&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span id=&amp;quot; lbl_spam&amp;quot;&amp;gt;Required, assuming that only an automated bot will see this. Elsewise, please ignore&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;textarea name=&amp;quot; txt_spam&amp;quot; rows=&amp;quot;2&amp;quot; cols=&amp;quot;20&amp;quot; id=&amp;quot;ctl00_cph_main_txt_spam&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;So if your handling the response:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;txt_spam has content = spam&lt;/p&gt;
&lt;p&gt;Unlike Nannette approach, I prefer to mark the mail and forward it to a dedicated spam account, just in case.&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=33" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/email/default.aspx">email</category></item><item><title>MIX 08 - the SESSIONS.</title><link>http://stuartmanning.com/blogs/web-development/archive/2008/03/19/mix-08-the-sessions.aspx</link><pubDate>Wed, 19 Mar 2008 17:52:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:32</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you like me didnt have the chance to be @ MIX 08 then fear not goto the session.vistimix.com&lt;/p&gt;
&lt;p&gt;Personally I thought the Advanced Search Engine lectures by Nathan Buggia where great introduction for anyone who doesn&amp;#39;t quite get Search Engine Optimisation. &lt;/p&gt;
&lt;p&gt;There is a great wealth of information available for everyone. Pass it on.&lt;/p&gt;
&lt;p&gt;http://sessions.visitmix.com/&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=32" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/web-development/archive/tags/mix08/default.aspx">mix08</category><category domain="http://stuartmanning.com/blogs/web-development/archive/tags/seo/default.aspx">seo</category></item><item><title>IE8, Web Standards and Compatibility</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/03/19/ie8-web-standards-and-compatibility.aspx</link><pubDate>Wed, 19 Mar 2008 17:44:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:31</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a class="" title="Leeanne Lowe - Web Creative" href="http://creative.leeannelowe.com/"&gt;Leeanne Lowe&lt;/a&gt; picked up on an article posted by on JoelonSoftware entitled Martian Headsets. &lt;a href="http://www.joelonsoftware.com/items/2008/03/17.html"&gt;http://www.joelonsoftware.com/items/2008/03/17.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Read over this light hearted article that addresses web standards. It&amp;#39;s both fact and fun.&lt;/p&gt;
&lt;p&gt;Also watch Dean Hachamovitch presentation and commentary on IE8 @ sessions.visitmix.com - keynote (approx timeline - 27min 40sec).&lt;/p&gt;
&lt;p&gt;Leeanne is the creative force behind the Belfast based Creative Online Media.&lt;/p&gt;
&lt;p&gt;Links:- &lt;/p&gt;
&lt;p&gt;Leeanne Lowe&amp;nbsp;@ &lt;a href="http://creative.leeannelowe.com/"&gt;http://creative.leeannelowe.com/&lt;/a&gt;&lt;br /&gt;JoelonSoftware @ &lt;a href="http://www.joelonsoftware.com/"&gt;http://www.joelonsoftware.com&lt;/a&gt;&amp;nbsp;article Matian Headset @ &lt;a href="http://www.joelonsoftware.com/items/2008/03/17.html"&gt;http://www.joelonsoftware.com/items/2008/03/17.html&lt;/a&gt;&lt;br /&gt;Creative Online Media @ &lt;a href="http://www.creativeonlinemedia.com/"&gt;http://www.creativeonlinemedia.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=31" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ie8/default.aspx">ie8</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/mix08/default.aspx">mix08</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/web+standards/default.aspx">web standards</category></item><item><title>IE8 beta</title><link>http://stuartmanning.com/blogs/web-development/archive/2008/03/19/ie8-beta.aspx</link><pubDate>Wed, 19 Mar 2008 17:42:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:30</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Try out &lt;a class="" title="IE8 Beta" href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx"&gt;http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I demoed this a few weaks ago and to be honest, I&amp;#39;m impressed.. Yes, Yes.. so some of my client sites are broke in IE8, but compatibly mode worked just fine. So developers/designers don&amp;#39;t fret, you can explicitly choose ie7 or ie8. Standards are an issue, but the idea of legacy rendering by default is highly appealing.&lt;/p&gt;
&lt;p&gt;Whats more is I&amp;#39;m looking forward to using the &amp;quot;offline&amp;quot; mode.. how great is that, no wireless hotspot... just keep on working. Yeah, I haven&amp;#39;t looked at the how yet, but the wow is now.&lt;/p&gt;
&lt;p&gt;Dean Hachamovitch presentation and commentary on IE8 @ &lt;a class="" title="MIX08 Sessions" href="http://sessions.visitmix.com/"&gt;sessions.visitmix.com&lt;/a&gt; - keynote (approx timeline - 27min 40sec).&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=30" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/web-development/archive/tags/ie8/default.aspx">ie8</category><category domain="http://stuartmanning.com/blogs/web-development/archive/tags/mix08/default.aspx">mix08</category></item><item><title>Windows Live Writer</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/03/19/windows-live-writer.aspx</link><pubDate>Wed, 19 Mar 2008 00:30:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:28</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This was a quick message posted into stuartmanning.com using Windows Live Writer&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Update:- Was impressed by the simplicity of Windows Live Writer. Tried and tested with blogger and community server. Was impressed to set my search tag on the main windows. Handy spell checker and controlled mark-up, even community server can be a bit screwy some days.&lt;/p&gt;
&lt;p&gt;Ideally, I would love to see Live Writer store my details in the cloud, so I can use one tool to manage everything and anywhere. I&amp;#39;m sure there is more to come. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://get.live.com/writer/overview"&gt;http://get.live.com/writer/overview&lt;/a&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=28" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/Window+Live+Writer/default.aspx">Window Live Writer</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/Blogging/default.aspx">Blogging</category></item><item><title>RSS Reader with LINQ to XML</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/27/rss-reader-with-linq-to-xml.aspx</link><pubDate>Wed, 27 Feb 2008 13:07:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:27</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MsoNormal"&gt;What joy, LINQ &lt;span&gt;&amp;nbsp;&lt;/span&gt;to XML
. This code example shows how you can use LINQ to XML to painlessly extract
content from an RSS feed. No more XPathDocument and etc, coded in minutes.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder sb = new StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //test read&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XNamespace slashNamespace = &amp;quot;http://www.w3.org/2005/Atom&amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XDocument rssFeed = XDocument.Load(@&amp;quot;http://feeds.feedburner.com/Gasta&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var posts = from item in rssFeed.Descendants(&amp;quot;item&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select new&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title = item.Element(&amp;quot;title&amp;quot;).Value,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Published = DateTime.Parse(item.Element(&amp;quot;pubDate&amp;quot;).Value),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Url = item.Element(&amp;quot;link&amp;quot;).Value,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description = item.Element(&amp;quot;description&amp;quot;).Value&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var post in posts)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(&amp;quot;&amp;lt;a class=\&amp;quot;news_header\&amp;quot; href=\&amp;quot;&amp;quot; + post.Url + &amp;quot;\&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(post.Title);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(&amp;quot;&amp;lt;span class=\&amp;quot;author\&amp;quot;&amp;gt;&amp;quot; + post.Published + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(&amp;quot;&amp;lt;div class=\&amp;quot;description\&amp;quot;&amp;quot; + post.Description + &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ltr_html.Text = sb.ToString();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Want to read more, see the original article from Scott Gutherie @ &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=27" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/RSS/default.aspx">RSS</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/code/default.aspx">code</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ+to+XML/default.aspx">LINQ to XML</category></item><item><title>Using the LinqDataSource</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/27/using-the-linqdatasource.aspx</link><pubDate>Wed, 27 Feb 2008 12:51:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:25</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I admit that at first I really didn&amp;#39;t like the
LinqDataSource, it has it own particularities that with the next iteration
might be removed. Also, I thought it didn&amp;#39;t find related table data (so
wrong!). &amp;nbsp;But that was more down to
trusting Visual Studio to bind the correct details for those (&lt;strike&gt;quick and nasty&lt;/strike&gt;) long
thought out selectable gridview to detailview scenarios.&lt;/p&gt;

&lt;p&gt;Check out this article by Scott Guthrie, it covers more of
the LinqDatasource&lt;/p&gt;&lt;p&gt;&lt;a href="http://aspalliance.com/1427_LINQ_to_SQL_Part_5__Binding_UI_using_the_ASPLinqDataSource_Control.1"&gt;http://aspalliance.com/1427_LINQ_to_SQL_Part_5__Binding_UI_using_the_ASPLinqDataSource_Control.1 &lt;/a&gt;&lt;/p&gt;&lt;p&gt;Article also some basic validation classes &lt;br /&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=25" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ+to+SQL/default.aspx">LINQ to SQL</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LinqDataSource/default.aspx">LinqDataSource</category></item><item><title>Simple Validation with LINQ to SQL Classes</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/27/simple-validation-with-linq-to-sql-classes.aspx</link><pubDate>Wed, 27 Feb 2008 12:36:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:24</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/blogs/roller/archive/2008/02/26/simple-validation-with-linq-to-sql-classes.aspx"&gt;http://geeks.ms/blogs/roller/archive/2008/02/26/simple-validation-with-linq-to-sql-classes.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article covers validation for LINQ to SQL, example are in VB but a recommened read for anyone.&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=24" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/VB/default.aspx">VB</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ+to+SQL/default.aspx">LINQ to SQL</category></item><item><title>Web 2.0 Logo Generator</title><link>http://stuartmanning.com/blogs/ajax/archive/2008/02/27/web-2-0-logo-generator.aspx</link><pubDate>Wed, 27 Feb 2008 12:31:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:23</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://creatr.cc/creatr/"&gt;http://creatr.cc/creatr/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Create a quick and easy Web 2.0 Logo. This was used to create the logo&amp;#39;s on &lt;a href="http://www.gotagshare.com/"&gt;http://www.gotagshare.com/&lt;/a&gt;&amp;nbsp;and &lt;a href="http://www.gotagshare.com/"&gt;http://www.gotagshare.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=23" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/ajax/archive/tags/web+2.0/default.aspx">web 2.0</category></item><item><title>JScript IntelliSense: Working with jQuery</title><link>http://stuartmanning.com/blogs/ajax/archive/2008/02/22/jscript-intellisense-working-with-jquery.aspx</link><pubDate>Fri, 22 Feb 2008 09:47:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:22</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;An excellent article that show how the recent VS2008 hotfix provides support for IntelliSense &amp;amp;jQuery&lt;br /&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=22" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/ajax/archive/tags/javascript/default.aspx">javascript</category><category domain="http://stuartmanning.com/blogs/ajax/archive/tags/ajax/default.aspx">ajax</category></item><item><title>Code performance analysis in Visual Studio 2008</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/22/code-performance-analysis-in-visual-studio-2008.aspx</link><pubDate>Fri, 22 Feb 2008 09:45:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:21</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;
&lt;a href="http://blog.maartenballiauw.be/"&gt;Maarten Balliauw&lt;/a&gt; has an excellent post on code perfomrace analysi in Visual Studio 2008&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.maartenballiauw.be/post/2008/02/Code-performance-analysis-in-Visual-Studio-2008.aspx"&gt;&amp;nbsp;Read More&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=21" width="1" height="1"&gt;</description></item><item><title>Ajax Control Toolkit Installation in Visual Web Developer</title><link>http://stuartmanning.com/blogs/ajax/archive/2008/02/22/ajax-control-toolkit-installation-in-visual-web-developer.aspx</link><pubDate>Fri, 22 Feb 2008 09:38:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:20</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;A good article by &lt;a href="http://weblogs.asp.net/nannettethacker/archive/2008/02/07/ajax-control-tookit-installation-in-visual-web-developer.aspx"&gt;&lt;b&gt;Nannette Thacker&lt;/b&gt;&lt;/a&gt; on how to install the &lt;a href="http://www.asp.net/ajax/"&gt;Ajax Control ToolKit&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://weblogs.asp.net/nannettethacker/archive/2008/02/07/ajax-control-tookit-installation-in-visual-web-developer.aspx"&gt;Read More&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=20" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/ajax/archive/tags/javascript/default.aspx">javascript</category><category domain="http://stuartmanning.com/blogs/ajax/archive/tags/ajax/default.aspx">ajax</category><category domain="http://stuartmanning.com/blogs/ajax/archive/tags/asp.net/default.aspx">asp.net</category></item><item><title>Top 10 Best Practices for Production ASP.NET Applications:</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/22/top-10-best-practices-for-production-asp-net-applications.aspx</link><pubDate>Fri, 22 Feb 2008 09:30:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:19</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Read this nice post that summarizes a number of good best practices to follow when deploying your ASP.NET applications into production&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx"&gt;Read More&lt;/a&gt;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=19" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title> Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/18/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx</link><pubDate>Mon, 18 Feb 2008 14:31:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:17</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;font&gt;&lt;font face="arial" size="2"&gt;LINQ (language integrated query) is one of the new features provided with VS 2008 and .NET 3.5.&amp;nbsp; LINQ makes the concept of &lt;em&gt;querying data&lt;/em&gt;
a first class programming concept in .NET, and enables you to
efficiently express queries in your programming language of choice.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx"&gt;&amp;nbsp;read more&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=17" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Email Standards Project:</title><link>http://stuartmanning.com/blogs/css/archive/2008/02/18/email-standards-project.aspx</link><pubDate>Mon, 18 Feb 2008 14:24:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:16</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.email-standards.org/"&gt;Email Standards Project&lt;/a&gt;:
Email Standards Project Says: Our goal is to help designers understand
why web standards are so important for email, while working with email
client developers to ensure that emails render consistently. This is a
community effort to improve the email experience for both designers and
readers alike.&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=16" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/css/archive/tags/css/default.aspx">css</category><category domain="http://stuartmanning.com/blogs/css/archive/tags/email/default.aspx">email</category></item><item><title>VS 2008 Web Development Hot-Fix Roll-Up Available</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/18/vs-2008-web-development-hot-fix-roll-up-available.aspx</link><pubDate>Mon, 18 Feb 2008 14:22:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:15</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Some initial performance glitches with VS 2008 Web Development have
been resolved and a patch has been released. Read more about it on Scot
Guthrie&amp;#39;s blog post &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Direct download &lt;a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10826"&gt;https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10826&lt;/a&gt;&amp;nbsp;(requires a live account)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=15" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/VS+2008/default.aspx">VS 2008</category></item><item><title>New platform rolled out across the Gasta Network</title><link>http://stuartmanning.com/blogs/aspnet/archive/2008/02/18/new-platform-rolled-out-across-the-gasta-network.aspx</link><pubDate>Mon, 18 Feb 2008 13:50:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:13</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The complete group of english partner sites have now been upgraded to include our new platform&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.gasta.com/"&gt;www.gasta.com&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.gasta.us/"&gt;www.gasta.us&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.gasta.co.uk/"&gt;www.gasta.co.uk&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.gasta.tv/"&gt;www.gasta.tv&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://money.gasta.com/"&gt;Money&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://travel.gasta.com/"&gt;Travel&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.europasearch.com/"&gt;EuropaSearch&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.surfni.com/"&gt;Surfni&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.baroneracing.com/"&gt;BarOneRacing&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=13" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/Gasta/default.aspx">Gasta</category><category domain="http://stuartmanning.com/blogs/aspnet/archive/tags/Belfast/default.aspx">Belfast</category></item><item><title>UTV Media acquires Tibus</title><link>http://stuartmanning.com/blogs/belfast/archive/2008/02/14/utv-media-acquires-tibus.aspx</link><pubDate>Thu, 14 Feb 2008 14:38:00 GMT</pubDate><guid isPermaLink="false">07788d0d-e107-40d4-a63a-d174bcccc593:18</guid><dc:creator>Stuart Manning</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;UTV has acquired Tibus in full, from Anderson Spratt Group Holdings,
to integrate into its burgeoning New Media division. &lt;/b&gt;&lt;/p&gt;



&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;img src="http://stuartmanning.com/aggbug.aspx?PostID=18" width="1" height="1"&gt;</description><category domain="http://stuartmanning.com/blogs/belfast/archive/tags/Belfast/default.aspx">Belfast</category></item></channel></rss>