<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jrummell.ToString()</title>
	<atom:link href="http://www.jrummell.com/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jrummell.com/blog</link>
	<description>another .NET blog</description>
	<lastBuildDate>Sat, 13 Aug 2011 00:14:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>jQuery UI Message available from Nuget</title>
		<link>http://www.jrummell.com/blog/index.php/2011/06/jquery-ui-message-available-from-nuget/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/06/jquery-ui-message-available-from-nuget/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 23:26:15 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[jquery-message]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/?p=189</guid>
		<description><![CDATA[The jQuery UI Message plugin is now available from NuGet. You can install it by searching for &#8220;jqueryui-message&#8221;.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The <a href="http://code.google.com/p/jquery-message/" target="_blank">jQuery UI Message</a> plugin is now available from <a href="http://nuget.org/List/Packages/jQueryUI-Message" target="_blank">NuGet</a>. You can install it by searching for &#8220;jqueryui-message&#8221;.</p>
<p style="text-align: center;"><a href="http://www.jrummell.com/blog/wp-content/uploads/2011/06/add-library-package-reference.png" target="_blank"><img class="aligncenter size-medium wp-image-190" title="Add Library Package Reference dialog" src="http://www.jrummell.com/blog/wp-content/uploads/2011/06/add-library-package-reference-300x168.png" alt="Add Library Package Reference dialog" width="300" height="168" /></a></p>
<div class="shr-publisher-189"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/06/jquery-ui-message-available-from-nuget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xVal for WebForms without xVal</title>
		<link>http://www.jrummell.com/blog/index.php/2011/06/xval-for-webforms-without-xval/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/06/xval-for-webforms-without-xval/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 03:23:44 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[xval-webforms]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/index.php/2011/06/xval-for-webforms-without-xval/</guid>
		<description><![CDATA[I’ve been working on xVal for WebForms without xVal in the jQuery.Validate branch. So far I’ve got basic server and client side validation for most data annotations validation attributes and server side validation for IValidatableObject implementers. The only challenging part so far was understanding how to serialize the validation rules for the jQuery Validate add [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I’ve been working on <a href="http://xvalwebforms.codeplex.com/" target="_blank">xVal for WebForms</a> without xVal in the <a href="http://xvalwebforms.codeplex.com/SourceControl/list/changesets?branch=jQuery.Validate" target="_blank">jQuery.Validate</a> branch. So far I’ve got basic server and client side validation for most data annotations validation attributes and server side validation for <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.ivalidatableobject.aspx" target="_blank">IValidatableObject</a> implementers. The only challenging part so far was understanding how to serialize the validation rules for the jQuery Validate <a href="http://docs.jquery.com/Plugins/Validation/rules" target="_blank">add method</a>.</p>
<pre class="csharpcode">$(<span class="str">&quot;#txtClientName&quot;</span>).rules(<span class="str">&quot;add&quot;</span>, {
 required: <span class="kwrd">true</span>,
 minlength: 5,
 messages: {
   required: <span class="str">&quot;Client name is required.&quot;</span>,
   minlength: <span class="str">&quot;Client name must be at least 5 characters.&quot;</span>
 }
});</pre>
<p>I finally decided to implement JavaScriptConverter, which is used with JavaScriptSerializer. The Serialize method is what takes the Rule collection and converts it into two separate dictionaries, one for rules and one for messages. This allows the JavaScriptSerializer to properly serialize the dictionaries for the add method options parameter.</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> RulesJavaScriptConverter : JavaScriptConverter
{
    <span class="kwrd">private</span> <span class="kwrd">readonly</span> ReadOnlyCollection&lt;Type&gt; _supportedTypes =
        <span class="kwrd">new</span> ReadOnlyCollection&lt;Type&gt;(<span class="kwrd">new</span> List&lt;Type&gt;(<span class="kwrd">new</span>[] {<span class="kwrd">typeof</span> (RuleCollection)}));

    <span class="kwrd">public</span> <span class="kwrd">override</span> IEnumerable&lt;Type&gt; SupportedTypes
    {
        get { <span class="kwrd">return</span> _supportedTypes; }
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">object</span> Deserialize(IDictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">object</span>&gt; dictionary, Type type,
                                       JavaScriptSerializer serializer)
    {
        <span class="kwrd">throw</span> <span class="kwrd">new</span> NotSupportedException();
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> IDictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">object</span>&gt; Serialize(<span class="kwrd">object</span> obj, JavaScriptSerializer serializer)
    {
        <span class="kwrd">return</span> Serialize(obj <span class="kwrd">as</span> RuleCollection, serializer);
    }

    <span class="kwrd">public</span> IDictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">object</span>&gt; Serialize(RuleCollection rules, JavaScriptSerializer serializer)
    {
        <span class="kwrd">if</span> (rules == <span class="kwrd">null</span>)
        {
            <span class="kwrd">throw</span> <span class="kwrd">new</span> ArgumentNullException(<span class="str">&quot;rules&quot;</span>);
        }

        Dictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">object</span>&gt; options =
            rules.ToDictionary&lt;Rule, <span class="kwrd">string</span>, <span class="kwrd">object</span>&gt;(rule =&gt; rule.Name, rule =&gt; rule.Options);
        Dictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">string</span>&gt; messages =
            rules.ToDictionary(rule =&gt; rule.Name, rule =&gt; rule.Message);

        Dictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">object</span>&gt; result =
            <span class="kwrd">new</span> Dictionary&lt;<span class="kwrd">string</span>, <span class="kwrd">object</span>&gt;(options) {{<span class="str">&quot;messages&quot;</span>, messages}};

        <span class="kwrd">return</span> result;
    }
}</pre>
<p>And here&#8217;s how I’m using it.</p>
<pre class="csharpcode">StringBuilder validationOptionsScript = <span class="kwrd">new</span> StringBuilder();
validationOptionsScript.AppendFormat(<span class="str">&quot;$('#{0}').rules('add', &quot;</span>, _controlToValidateId);

JavaScriptSerializer serializer = <span class="kwrd">new</span> JavaScriptSerializer();
serializer.RegisterConverters(<span class="kwrd">new</span>[] {<span class="kwrd">new</span> RulesJavaScriptConverter()});
serializer.Serialize(rules, validationOptionsScript);

validationOptionsScript.AppendLine(<span class="str">&quot;);&quot;</span>);</pre>
<p>The next step will be figuring out validation groups. I also plan on renaming the project. My best idea so far is jQuey Validate.NET. It’s not the most creative, but it gets the point across.</p>
<div class="shr-publisher-188"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/06/xval-for-webforms-without-xval/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>xVal for WebForms &#8211; the Future</title>
		<link>http://www.jrummell.com/blog/index.php/2011/05/xval-for-webforms-the-future/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/05/xval-for-webforms-the-future/#comments</comments>
		<pubDate>Tue, 03 May 2011 19:47:01 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[xval-webforms]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/?p=185</guid>
		<description><![CDATA[Based on comments I&#8217;ve received from my last xVal for WebForms post, I&#8217;ve decided on a direction. The project will keep jQuery Validation but will move away from the xVal dependency. We&#8217;ll be trying the approach outlined by Dave Ward at Encosia.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Based on comments I&#8217;ve received from my last <a title="The State of xVal for WebForms" href="http://www.jrummell.com/blog/index.php/2011/03/the-state-of-xval-for-webforms/">xVal for WebForms post</a>, I&#8217;ve decided on a direction. The project will keep jQuery Validation but will move away from the xVal dependency. We&#8217;ll be trying the approach outlined by Dave Ward at <a href="http://encosia.com/2009/11/04/using-jquery-validation-with-asp-net-webforms/">Encosia</a>.</p>
<div class="shr-publisher-185"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/05/xval-for-webforms-the-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery UI Message Update</title>
		<link>http://www.jrummell.com/blog/index.php/2011/03/jquery-ui-message-update/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/03/jquery-ui-message-update/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 03:05:41 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery-message]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/?p=180</guid>
		<description><![CDATA[I updated the jQuery UI Message plugin today. There are now methods for show, hide, options and destroy. There is also a full live demo page. See more at the project page.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I updated the jQuery UI Message plugin today. There are now methods for <strong>show</strong>, <strong>hide</strong>, <strong>options </strong>and <strong>destroy</strong>. There is also a full <a href="http://jquery-message.googlecode.com/hg/demo/demo.html">live demo page</a>. See more at the <a href="http://code.google.com/p/jquery-message/">project page</a>.</p>
<div class="shr-publisher-180"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/03/jquery-ui-message-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MessageBox &#8211; The jQuery Plugin</title>
		<link>http://www.jrummell.com/blog/index.php/2011/03/messagebox-the-jquery-plugin/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/03/messagebox-the-jquery-plugin/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 19:08:34 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery-message]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/?p=163</guid>
		<description><![CDATA[Now that I&#8217;ve been working more and more with ASP.NET MVC, I&#8217;ve been rewriting some of my server side controls with jQuery plugins. A while back I shared my version of Janko&#8217;s popular MessageBox control. I&#8217;ve created a similar effect with a jQuery plugin based on the Highlight/Error examples on the jQuery UI Themes page. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Now that I&#8217;ve been working more and more with ASP.NET MVC, I&#8217;ve been rewriting some of my server side controls with jQuery plugins. A while back I shared <a title="My version of the MessageBox control" href="http://www.jrummell.com/blog/index.php/2008/07/my-version-of-the-messagebox-control/">my version</a> of Janko&#8217;s popular <a href="http://www.jankoatwarpspeed.com/post/2008/05/28/Create-MessageBox-user-control-using-ASPNET-and-CSS.aspx">MessageBox control</a>. I&#8217;ve created a similar effect with a jQuery plugin based on the Highlight/Error examples on the jQuery UI <a href="http://jqueryui.com/themeroller/">Themes page</a>.</p>
<p>Here&#8217;s an example:</p>
<p><img class="aligncenter size-medium wp-image-167" title="message-demo" src="http://www.jrummell.com/blog/wp-content/uploads/2011/03/message-demo.png" /></p>
<p>Usage:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;infoMessage&quot;&gt;
    To learn more about ASP.NET MVC visit &lt;a href=&quot;http://asp.net/mvc&quot; title=&quot;ASP.NET MVC Website&quot;&gt;

http://asp.net/mvc&lt;/a&gt;.

&lt;/div&gt;
&lt;br /&gt;
&lt;div id=&quot;errorMessage&quot; style=&quot;display: none&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    $(document).ready(function ()
    {
        $(&quot;#infoMessage&quot;).message();

        $(&quot;#errorMessage&quot;).message({
            type: &quot;error&quot;,
            message: &quot;Oops! An enexpected error has occurred.&quot;,
            dismiss: false
        });
    });
&lt;/script&gt;
</pre>
<p>The message function accepts the following optional parameters:</p>
<ul>
<li><strong>type</strong>: &#8220;info&#8221; or &#8220;error&#8221;. Default is &#8220;info&#8221;.</li>
<li><strong>message</strong>: &#8220;your message&#8221;. Default is the content of the element.</li>
<li><strong>dismiss</strong>: true or false. Default is true. If true, &#8220;Click to dismiss&#8221; will be appended to the message and clicking the message will hide it.</li>
</ul>
<p>I&#8217;ve created a plugin project at <a href="http://plugins.jquery.com/project/message">http://plugins.jquery.com/project/message</a> and I&#8217;m hosting the source at <a href="http://code.google.com/p/jquery-message/">http://code.google.com/p/jquery-message/</a>.</p>
<div class="shr-publisher-163"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/03/messagebox-the-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The State of xVal for WebForms</title>
		<link>http://www.jrummell.com/blog/index.php/2011/03/the-state-of-xval-for-webforms/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/03/the-state-of-xval-for-webforms/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 21:19:05 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[xval-webforms]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/?p=136</guid>
		<description><![CDATA[I’ve been neglecting xVal for WebForms for a while now, mainly because I’m not sure which direction to take it. The xVal project is now deprecated in favor of the client side validation support introduced in ASP.NET MVC 2. This is obviously a problem since xVal for WebForms is built on top of xVal. I [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I’ve been neglecting <a href="http://xvalwebforms.codeplex.com/" target="_blank">xVal for WebForms</a> for a while now, mainly because I’m not sure which direction to take it. The <a href="http://xval.codeplex.com/" target="_blank">xVal</a> project is now deprecated in favor of the client side validation support introduced in ASP.NET MVC 2. This is obviously a problem since xVal for WebForms is built on top of xVal.</p>
<p>I think there are a few directions the project could take. The more traditional WebForms approach would be to simply generate the standard System.Web.Web.UI validation controls based on a model’s DataAnnotation attributes. I’m a fan of this approach as it makes a lot of sense to WebForm developers. For example, consider the following model:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> Booking
{
    [Required(ErrorMessage = <span class="str">"Client Name is required."</span>)]
    <span class="kwrd">public</span> <span class="kwrd">string</span> ClientName { get; set; }

    [Range(1, 20, ErrorMessage = <span class="str">"Number of Guests must be between 1 and 20."</span>)]
    <span class="kwrd">public</span> <span class="kwrd">int</span> NumberOfGuests { get; set; }
}</pre>
<p>&nbsp;</p>
<p>The generated validators would be very similar to the following:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">asp:RangeValidator</span> <span class="attr">ID</span><span class="kwrd">="valNumberOfGuests"</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">Display</span><span class="kwrd">="Dynamic"</span>
<span class="attr">ControlToValidate</span><span class="kwrd">="txtNumberOfGuests"</span> <span class="attr">Type</span><span class="kwrd">="Integer"</span> <span class="attr">MinimumValue</span><span class="kwrd">="1"</span> <span class="attr">MaximumValue</span><span class="kwrd">="20"</span>
<span class="attr">ErrorMessage</span><span class="kwrd">="Number of Guests must be between 1 and 20."</span><span class="kwrd">/&gt;</span>

<span class="kwrd">&lt;</span><span class="html">asp:RequiredFieldValidator</span> <span class="attr">ID</span><span class="kwrd">="valClientName"</span> <span class="attr">runat</span><span class="kwrd">="server"</span> <span class="attr">Display</span><span class="kwrd">="Dynamic"</span>
<span class="attr">ControlToValidate</span><span class="kwrd">="txtClientName"</span> <span class="attr">ErrorMessage</span><span class="kwrd">="Client Name is required."</span> <span class="kwrd">/&gt;</span></pre>
<p>&nbsp;</p>
<p>The other option is to find a way use the ASP.NET MVC validation bits with WebForms. ASP.NET MVC 2 uses the MicrosoftAjax library, while ASP.NET MVC 3 introduced unobtrusive validation with jQuery Validate. This approach would work a lot like the current project, but it would utilize MVC instead of xVal. I have to admit I’m not thrilled about referencing System.Web.Mvc in a WebForms project.</p>
<p>Yet another option is to generate jQuery validation scripts from scratch, using the methods <a href="http://encosia.com/2009/11/04/using-jquery-validation-with-asp-net-webforms/" target="_blank">Dave Ward</a> has suggested. I like this idea since it doesn’t put a dependency on MVC bits.</p>
<p>It took me a while, but after working with WebForms and trying to make validation better, i.e. more like MVC, I can’t help but think that the best option is to simply move to MVC. But xVal for WebForms can still help projects that can’t be converted to MVC. I’ve already created a <a href="http://xvalwebforms.codeplex.com/SourceControl/list/changesets?branch=nativeWebFormValidation" target="_blank">branch</a> prototyping the first, most WebForms friendly option. <strong>If you use xVal for WebForms or are interested in attribute based client and server side validation, please let me know which option you would prefer.</strong></p>
<div class="shr-publisher-136"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/03/the-state-of-xval-for-webforms/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>IIS Express and Visual Studio 2010 without SP1</title>
		<link>http://www.jrummell.com/blog/index.php/2011/03/iis-express-and-visual-studio-2010-without-sp1/</link>
		<comments>http://www.jrummell.com/blog/index.php/2011/03/iis-express-and-visual-studio-2010-without-sp1/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 21:20:07 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[iis]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/blog/?p=123</guid>
		<description><![CDATA[Here&#8217;s how you can integrate IIS Express with Visual Studio 2010 without SP1. I&#8217;m taking advantage of External Tools again. There are two very simple ways to run IIS Express from the command line. The first is to pass the web project path: You can use this by selecting your web project in the solution [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Here&#8217;s how you can integrate <a href="http://learn.iis.net/page.aspx/868/iis-express-overview/" target="_blank">IIS Express</a> with Visual Studio 2010 without SP1. I&#8217;m taking advantage of External Tools again. There are two very simple ways to run IIS Express from the <a href="http://learn.iis.net/page.aspx/870/running-iis-express-from-the-command-line/" target="_blank">command line</a>. The first is to pass the web project path:</p>
<p><a href="http://www.jrummell.com/blog/wp-content/uploads/2011/03/path.png"><img class="alignnone size-medium wp-image-125" title="IIS Express with Path" src="http://www.jrummell.com/blog/wp-content/uploads/2011/03/path-300x296.png" alt="" width="300" height="296" /></a></p>
<p>You can use this by selecting your web project in the solution explorer and then running the tool.</p>
<p>The second way is to use a configuration file. This is for when you need something different than the default settings. For example, if you need to enable PHP. Save your applicationHost.config in the root of your project file before running this:</p>
<p><a href="http://www.jrummell.com/blog/wp-content/uploads/2011/03/config.png"><img class="alignnone size-medium wp-image-124" title="IIS Express with Config" src="http://www.jrummell.com/blog/wp-content/uploads/2011/03/config-300x296.png" alt="" width="300" height="296" /></a></p>
<p>I&#8217;ve also attached the exported settings at the bottom of this post. You can import them from the Tools/Import and Export Settings&#8230; menu option.</p>
<p>Now that we can run IIS Express, we need to configure the project to use it. In the Web tab of your project settings, select Use Custom Web Server and type the Server Url that IIS Express is configured to use. The default is http://localhost:8080/.</p>
<p><a href="http://www.jrummell.com/blog/wp-content/uploads/2011/03/websettings.png"><img class="alignnone size-medium wp-image-126" title="Project Web Settings" src="http://www.jrummell.com/blog/wp-content/uploads/2011/03/websettings-300x175.png" alt="" width="300" height="175" /></a></p>
<p>Wasn&#8217;t that easy?</p>
<div class="attachments"><dl class="attachments attachments-large"><dt class="icon"><a title="IIS Express External Tools Settings" href="http://www.jrummell.com/blog/index.php/2011/03/iis-express-and-visual-studio-2010-without-sp1/?aid=127&amp;sa=0" ><img src="http://www.jrummell.com/blog/wp-content/plugins/eg-attachments/img/flags/zip.png" width="48" height="48" alt="IIS Express External Tools Settings" /></a></dt><dd class="caption"><strong>Title</strong> : <a title="IIS Express External Tools Settings" href="http://www.jrummell.com/blog/index.php/2011/03/iis-express-and-visual-studio-2010-without-sp1/?aid=127&amp;sa=0" >IIS Express External Tools Settings</a><br /><strong>Caption</strong> : <br /><strong>File name</strong> : IISExpressExternalTools.zip<br /><strong>Size</strong> : 1 kB</dd></dl></div>
<div class="shr-publisher-123"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2011/03/iis-express-and-visual-studio-2010-without-sp1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I moved to WordPress</title>
		<link>http://www.jrummell.com/blog/index.php/2010/12/i-moved-to-wordpress/</link>
		<comments>http://www.jrummell.com/blog/index.php/2010/12/i-moved-to-wordpress/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 19:30:28 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blogging]]></category>

		<guid isPermaLink="false">http://www.jrummell.com/wp/?p=98</guid>
		<description><![CDATA[I moved my blog from BlogEngine.NET to WordPress. My main reason for moving away from BE is that there just aren&#8217;t that many themes and plugins available for the latest release, 1.6.1.0. However, now that I&#8217;ve completed my transition I just saw that BE 2.0 RC is now available. And they also added Janko to [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I moved my blog from <a href="http://www.dotnetblogengine.net/">BlogEngine.NET</a> to <a href="http://wordpress.org/">WordPress</a>. My main reason for moving away from BE is that there just aren&#8217;t that many themes and plugins available for the latest release, 1.6.1.0. However, now that I&#8217;ve completed my transition I just saw that BE 2.0 RC is now available. And they also added <a href="http://www.jankoatwarpspeed.com/">Janko</a> to their team, which leads me to believe that there will be some very cool themes available. Perhaps I should have waited?</p>
<div class="shr-publisher-98"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2010/12/i-moved-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Visual Studio’s Transact-SQL Editor</title>
		<link>http://www.jrummell.com/blog/index.php/2010/10/visual-studios-transact-sql-editor/</link>
		<comments>http://www.jrummell.com/blog/index.php/2010/10/visual-studios-transact-sql-editor/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 19:57:49 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">/john/blog/post/Visual-Studioe28099s-Transact-SQL-Editor.aspx</guid>
		<description><![CDATA[I’ve been using Visual Studio for years, but I just learned something new that’s been around since at least Visual Studio 2005. It has a built in Transact-SQL Editor that you can use to write and execute SQL queries. From what I can tell, it looks like a component of SQL Server Management Studio 2008. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I’ve been using Visual Studio for years, but I just learned something new that’s been around since at least Visual Studio 2005. It has a built in <a href="http://msdn.microsoft.com/en-us/library/dd380721.aspx">Transact-SQL Editor</a> that you can use to write and execute SQL queries. From what I can tell, it looks like a component of SQL Server Management Studio 2008. You can access it from the <strong>Transact-SQL</strong> option in the <strong>Data</strong> menu, which opens the editor in a new tab.</p>
<div class="shr-publisher-4"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2010/10/visual-studios-transact-sql-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confluence Universal Wiki Converter (UWC) for ScrewTurn</title>
		<link>http://www.jrummell.com/blog/index.php/2010/09/confluence-universal-wiki-converter-uwc-for-screwturn/</link>
		<comments>http://www.jrummell.com/blog/index.php/2010/09/confluence-universal-wiki-converter-uwc-for-screwturn/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 14:44:46 +0000</pubDate>
		<dc:creator>jrummell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[confluence-uwc]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">/john/blog/post/Confluence-Universal-Wiki-Converter-(UWC)-for-ScrewTurn.aspx</guid>
		<description><![CDATA[My company recently started a corporate wiki. We initially used ScrewTurn, an excellent open source ASP.NET application. It worked great for our department, but it wasn’t taking off for the rest of the company. Non-technical users just couldn’t get wiki markup and weren’t able to manage edits with the visual editor. So we turned to [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>My <a href="http://www.beldenbrick.com" target="_blank">company</a> recently started a corporate wiki. We initially used <a href="http://www.screwturn.eu/" target="_blank">ScrewTurn</a>, an excellent open source ASP.NET application. It worked great for our department, but it wasn’t taking off for the rest of the company. Non-technical users just couldn’t get wiki markup and weren’t able to manage edits with the visual editor. So we turned to <a href="http://www.atlassian.com/software/confluence/" target="_blank">Confluence</a>, an enterprise class commercial wiki. I won’t get into a feature comparison here. There are plenty of <a href="http://www.wikimatrix.org/" target="_blank">other</a> <a href="http://en.wikipedia.org/wiki/Comparison_of_wiki_software" target="_blank">sites</a> devoted to that.</p>
<p>Since we had been using ScrewTurn for several months, we had a few hundred pages that we needed to migrate to Confluence. We hoped to find a utility to take care of the migration, but we were unable to find one. So in the end, I wrote my own UWC implementation for ScrewTurn.</p>
<p>The <a href="https://studio.plugins.atlassian.com/wiki/x/H4Mi" target="_blank">Confluence Universal Wiki Converter (UWC)</a> is defined as</p>
<blockquote><p>… a standalone application which converts pages from other wikis to Confluence. It&#8217;s also an extensible framework, allowing users with wikis that aren&#8217;t currently supported to add their own converters.</p></blockquote>
<p>Here are the general steps I took to implement a wiki converter for ScrewTurn.</p>
<ol>
<li><a rel="nofollow" href="https://studio.plugins.atlassian.com/wiki/display/UWC/UWC+Developer+Documentation#UWCDeveloperDocumentation-ImprovinganExistingWikiConverter">Implement a Wiki Converter for ScrewTurn</a>. I used MediaWiki&#8217;s Syntax Converter as a base since the basic wiki syntax is very similar. I also implemented a few Converter classes, <a rel="nofollow" href="https://studio.plugins.atlassian.com/wiki/display/UWC/UWC+UDMF+Framework">UserDateConverter</a> (requires the <a rel="nofollow" href="https://plugins.atlassian.com/plugin/details/17666">Confluence UDMF plugin</a>), <a rel="nofollow" href="https://studio.plugins.atlassian.com/wiki/display/UWC/UWC+Page+Titles+Framework">PagenameConverter</a>, <a rel="nofollow" href="https://studio.plugins.atlassian.com/wiki/display/UWC/UWC+Attachments+Framework">AttachmentsConverter</a>, MetaDataCleaner (to remove the first three lines in ScrewTurn page files that include page name, date, and ##PAGE##).</li>
<li>In ScrewTurn, <a rel="nofollow" href="http://www.screwturn.eu/Help.DataMigration.ashx">change the page storage provider to Local Pages Provider</a> (if its using a different provider such as SQL).</li>
<li>Run the customized UWC implemented in step 1 and convert one namespace at a time.</li>
</ol>
<p>You can also view my <a href="http://stackoverflow.com/q/2830227/26226" target="_blank">StackOverflow question and answer</a> that inspired this post.</p>
<div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:8621ef82-2746-451c-96d4-a4ec4243fe7d" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<p>Confluence UWC with ScrewTurn converter <a href="http://www.jrummell.com/confluence/ConfluenceUWC.zip">source code</a></p>
</div>
<div class="shr-publisher-5"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.jrummell.com/blog/index.php/2010/09/confluence-universal-wiki-converter-uwc-for-screwturn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

