<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-3147727977521057738</atom:id><lastBuildDate>Mon, 27 Oct 2008 09:51:31 +0000</lastBuildDate><title>blog</title><description>Articles about web development from the consultants at sourcemotion limited.</description><link>http://www.sourcemotion.com/blog/blogger.html</link><managingEditor>noreply@blogger.com (Steve Sage)</managingEditor><generator>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-8241413496740056525</guid><pubDate>Mon, 27 Oct 2008 09:38:00 +0000</pubDate><atom:updated>2008-10-27T02:51:31.022-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>validation controls</category><category domain='http://www.blogger.com/atom/ns#'>ASP.NET</category><category domain='http://www.blogger.com/atom/ns#'>CompareValidator</category><title>Using the ASP.NET CompareValidator control to validate date input</title><atom:summary type='text'>Stumbled across this tip the other day:

http://dotnettipoftheday.org/tips/validate-format-of-integer-double-date-currency.aspx

It turns out that you can validate date inputs with a CompareValidator by setting the Operator property to DataTypeCheck and ValidationDataType to Date (or Integer, Double, Currency, etc.).

This was a new one on me, I had always assumed that the CompareValidator was </atom:summary><link>http://www.sourcemotion.com/blog/2008/10/using-aspnet-comparevalidator-control.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-996675277655231707</guid><pubDate>Wed, 03 Sep 2008 09:49:00 +0000</pubDate><atom:updated>2008-09-03T04:56:57.928-07:00</atom:updated><title>Comparing Linq with SubSonic</title><atom:summary type='text'>After seeing Subsonic in action in the dashCommerce project (Open Source ASP.NET eCommerce application) I have used it in a couple of projects and I like it. It's easy to get up and running, has an intuitive object model and a handy Scaffold component for getting a data admin interface put together quickly. It stands up well compared to other .NET DALs I have used in the past e.g. NEO which I </atom:summary><link>http://www.sourcemotion.com/blog/2008/09/comparing-linq-with-subsonic.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-3204055661420003435</guid><pubDate>Mon, 23 Jun 2008 08:25:00 +0000</pubDate><atom:updated>2008-06-23T02:00:09.826-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Image replacement</category><category domain='http://www.blogger.com/atom/ns#'>XHTML</category><category domain='http://www.blogger.com/atom/ns#'>CSS</category><title>CSS Image Replacement Techniques</title><atom:summary type='text'>Web designers like to use images for text because they can use non-standard fonts and have them nicely anti-aliased. There are a number of techniques out there that allow you to make this kind of image text accessible and search-engine friendly.One technique I have seen used is a negative text-indent (see http://phark.typepad.com/phark/2003/08/accessible_imag.html).For example, if you wanted to </atom:summary><link>http://www.sourcemotion.com/blog/2008/06/css-image-replacement-techniques.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-3160712390972152979</guid><pubDate>Wed, 18 Jun 2008 16:52:00 +0000</pubDate><atom:updated>2008-06-23T01:00:05.672-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>XHTML</category><category domain='http://www.blogger.com/atom/ns#'>FCKEditor</category><title>Get the FCKEditor value from javascript</title><atom:summary type='text'>As a postscript to my previous post about customizing the Subsonic Scaffold I also had cause whilst building an admin interface to pull out the XHTML value from the editor in a Javascript function. This took a little bit of searching for so I thought I would post it here:

FCKeditorAPI.GetInstance("ctl00_phAdmin_Scaffold1_PageContent").GetXHTML(true);

Where ctl00_phAdmin_Scaffold1_PageContent is</atom:summary><link>http://www.sourcemotion.com/blog/2008/06/get-fckeditor-value-from-javascript.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-8169519026785713138</guid><pubDate>Wed, 18 Jun 2008 15:44:00 +0000</pubDate><atom:updated>2008-06-23T00:58:17.929-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Scaffold</category><category domain='http://www.blogger.com/atom/ns#'>XHTML</category><category domain='http://www.blogger.com/atom/ns#'>ASP.NET</category><category domain='http://www.blogger.com/atom/ns#'>FCKEditor</category><category domain='http://www.blogger.com/atom/ns#'>Subsonic</category><title>Customizing the Subsonic scaffold control</title><atom:summary type='text'>The Subsonic data access layer comes with a control called a Scaffold (the Scaffold concept comes from Ruby on Rails apparently) which allows you to quickly build a simple administration interface for your database tables.

The basic syntax is as follows:

&lt;cc1:Scaffold ID="Scaffold1" runat="server" TableName="Products"&gt;&lt;/cc1:Scaffold&gt;

Where SubsonicProvider is the name of the SubSonicService </atom:summary><link>http://www.sourcemotion.com/blog/2008/06/customizing-subsonic-scaffold-control.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-1364659194107785027</guid><pubDate>Fri, 21 Mar 2008 16:26:00 +0000</pubDate><atom:updated>2008-04-23T08:11:28.726-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>validation controls</category><category domain='http://www.blogger.com/atom/ns#'>CheckBoxList</category><category domain='http://www.blogger.com/atom/ns#'>ASP.NET</category><title>Validating a CheckBoxList with an ASP.NET validation control</title><atom:summary type='text'>If you try to use the standard ASP.NET validation controls to validate a CheckBoxList control you may receive an error message that looks like this:

Control 'CheckBoxList1' referenced by the ControlToValidate property of 'RequiredFieldValidator1' cannot be validated

Unfortunately out of the box the RequiredFieldValidator will not work on the CheckBoxList control. In a recent project I had a </atom:summary><link>http://www.sourcemotion.com/blog/2008/03/validating-checkboxlist-with-aspnet.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-7982839826435506730</guid><pubDate>Fri, 01 Feb 2008 17:42:00 +0000</pubDate><atom:updated>2008-02-18T10:02:22.498-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Toolset</category><category domain='http://www.blogger.com/atom/ns#'>NUnit</category><category domain='http://www.blogger.com/atom/ns#'>TDD</category><title>Toolset (Part 4) - NUnit</title><atom:summary type='text'>NUnit is a unit-testing framework for .NET. You can download it here:

http://www.nunit.org/index.php?p=download

In this article I'm going to give a quick guide to how I set up my NUnit test projects. I'm not going to go into the reasons why test-driven development is a good idea, for that why not take a look at this:

http://www.codinghorror.com/blog/archives/000640.html (it has the added </atom:summary><link>http://www.sourcemotion.com/blog/2008/02/toolset-part-4-nunit.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-1862147877740585282</guid><pubDate>Tue, 29 Jan 2008 22:35:00 +0000</pubDate><atom:updated>2008-02-21T07:34:08.815-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>log analyzer</category><category domain='http://www.blogger.com/atom/ns#'>Toolset</category><category domain='http://www.blogger.com/atom/ns#'>spider</category><category domain='http://www.blogger.com/atom/ns#'>class browser</category><title>Toolset (Part 3) - Miscellaneous</title><atom:summary type='text'>Reflector

Reflector is a class browser, explorer, analyzer and documentation viewer for .NET.

http://www.aisto.com/roeder/dotnet/

It is particularly useful if you are having problems with a third party .NET assembly that you do not have the source for as it includes a disassembler. If you open up an assembly (File...Open) and then drill down to a class or method you can right click and select </atom:summary><link>http://www.sourcemotion.com/blog/2008/01/toolset-part-3-miscellaneous.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-3647470087749052051</guid><pubDate>Mon, 17 Dec 2007 18:11:00 +0000</pubDate><atom:updated>2008-02-18T07:55:47.489-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>XHTML</category><category domain='http://www.blogger.com/atom/ns#'>CSS</category><category domain='http://www.blogger.com/atom/ns#'>W3C</category><category domain='http://www.blogger.com/atom/ns#'>HTML</category><title>Toolset (Part 2) - HTML and CSS</title><atom:summary type='text'>W3C Markup Validation Service
Visual Studio will validate your HTML but this won't tell you if your final page is compliant with W3C Standards since server controls may output invalid HTML or you may write out HTML in your code behind.

http://validator.w3.org/

I usually use the Validate by Direct Input tab because often your site won't be publicly accessible during development. I just View </atom:summary><link>http://www.sourcemotion.com/blog/2008/01/toolset-part-2-html-and-css.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-8055298128678617499</guid><pubDate>Mon, 10 Dec 2007 18:00:00 +0000</pubDate><atom:updated>2008-01-14T08:48:16.254-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Toolset</category><category domain='http://www.blogger.com/atom/ns#'>SysInternals</category><category domain='http://www.blogger.com/atom/ns#'>Microsoft</category><title>Toolset (Part 1) - SysInternals</title><atom:summary type='text'>I thought I'd do a regular post on the free tools I often use in development. Some are nice to have, some I now find completely indispensable.

The SysInternals website (acquired by Microsoft in 2006) provides a number of tools which can be very useful to help developers diagnose system problems.
http://technet.microsoft.com/en-us/sysinternals/default.aspxHere is a brief summary of some of the </atom:summary><link>http://www.sourcemotion.com/blog/2007/12/toolset-part-1-sysinternals.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-3708092029101664558</guid><pubDate>Sun, 25 Nov 2007 19:20:00 +0000</pubDate><atom:updated>2008-01-14T08:39:04.673-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Serialization</category><category domain='http://www.blogger.com/atom/ns#'>.NET</category><category domain='http://www.blogger.com/atom/ns#'>Deserialization</category><category domain='http://www.blogger.com/atom/ns#'>XML</category><category domain='http://www.blogger.com/atom/ns#'>C#</category><title>Xml Serialization in C#</title><atom:summary type='text'>In a number of recent projects we have had to expose web services to third parties. This requires discipline in agreeing and sticking to a XML schema for your communication.

BaseSerializableObject
To make sure our classes keep in step with our schemas we utilise a base serializable object class which provides methods for converting our objects to and from XML. Each object then implements a </atom:summary><link>http://www.sourcemotion.com/blog/2007/11/something-else.html</link><author>noreply@blogger.com (Steve Sage)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-3147727977521057738.post-3336513769583466381</guid><pubDate>Mon, 05 Nov 2007 18:44:00 +0000</pubDate><atom:updated>2008-01-14T09:26:07.253-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>development</category><category domain='http://www.blogger.com/atom/ns#'>solutions</category><category domain='http://www.blogger.com/atom/ns#'>IT</category><category domain='http://www.blogger.com/atom/ns#'>web</category><title>Welcome to the sourcemotion blog</title><atom:summary type='text'>Welcome to the new sourcemotion blog. I'm going to be posting articles about IT, specifically web development using Microsoft technologies. I hope people find it useful. I think it will be useful and interesting for me to have a log of the sorts of things I have been working on and the solutions we have come up with.</atom:summary><link>http://www.sourcemotion.com/blog/2007/11/first-post.html</link><author>noreply@blogger.com (Steve Sage)</author></item></channel></rss>
