<?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>Martijn Boland &#187; Web development</title>
	<atom:link href="http://blogs.taiga.nl/martijn/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.taiga.nl/martijn</link>
	<description>New adventures in .NET</description>
	<lastBuildDate>Wed, 25 Jan 2012 22:27:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MvcPaging 1.0.2</title>
		<link>http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/</link>
		<comments>http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 21:57:46 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Paging]]></category>
		<category><![CDATA[Razor]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/' addthis:title='MvcPaging 1.0.2 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>A new version of the MvcPaging component is available via NuGet with the following changes: Added ItemStart and ItemEnd properties to IPagedList (Displaying items {ItemStart} &#8211; {ItemEnd}). Non-canonical url&#8217;s for page 1 (https://github.com/martijnboland/MvcPaging/issues/2). So the core library hasn’t changed much, and in all honesty, I think it’s pretty much done. Please leave a reply if <a href="http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/' addthis:title='MvcPaging 1.0.2 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>A new version of the <a href="https://github.com/martijnboland/mvcpaging">MvcPaging</a> component is available via <a href="https://nuget.org/packages/MvcPaging">NuGet</a> with the following changes:</p>
<ul>
<li>Added ItemStart and ItemEnd properties to IPagedList (Displaying items {ItemStart} &#8211; {ItemEnd}). </li>
<li>Non-canonical url&#8217;s for page 1 (<a href="https://github.com/martijnboland/MvcPaging/issues/2">https://github.com/martijnboland/MvcPaging/issues/2</a>).</li>
</ul>
<p>So the core library hasn’t changed much, and in all honesty, I think it’s pretty much done. Please leave a reply if you think otherwise.</p>
<p>What did change substantially is the sample application. It was still very much ASP.NET 1.0 with WebForms views. This is now a proper ASP.NET MVC 3 application with Razor views and the default ASP.NET MVC 4.0 template for look &amp; feel.</p>
<p>&#160;<a href="http://blogs.taiga.nl/martijn/wp-content/uploads/2011/12/Screenshot.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Screenshot" border="0" alt="Screenshot" src="http://blogs.taiga.nl/martijn/wp-content/uploads/2011/12/Screenshot_thumb.png" width="640" height="400" /></a></p>
<p>The sample application can be found at <a href="https://github.com/martijnboland/mvcpaging">GitHub</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2011/12/07/mvcpaging-1-0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep your users informed with ASP.NET MVC</title>
		<link>http://blogs.taiga.nl/martijn/2011/05/03/keep-your-users-informed-with-asp-net-mvc/</link>
		<comments>http://blogs.taiga.nl/martijn/2011/05/03/keep-your-users-informed-with-asp-net-mvc/#comments</comments>
		<pubDate>Tue, 03 May 2011 14:09:50 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Notification]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/?p=161</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2011/05/03/keep-your-users-informed-with-asp-net-mvc/' addthis:title='Keep your users informed with ASP.NET MVC '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>In almost every application, feedback from the application to the user via notification messages is required. For some strange reason, we don’t have a standard way in .NET web applications for dealing with this kind of messages and I find myself hacking some half-baked solutions over and over again. Starting from today, this must end! <a href="http://blogs.taiga.nl/martijn/2011/05/03/keep-your-users-informed-with-asp-net-mvc/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2011/05/03/keep-your-users-informed-with-asp-net-mvc/' addthis:title='Keep your users informed with ASP.NET MVC '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>In almost every application, feedback from the application to the user via notification messages is required. </p>
<p><a href="http://blogs.taiga.nl/martijn/wp-content/uploads/2011/05/success.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="success" border="0" alt="success" src="http://blogs.taiga.nl/martijn/wp-content/uploads/2011/05/success_thumb.png" width="513" height="52" /></a></p>
<p>For some strange reason, we don’t have a standard way in .NET web applications for dealing with this kind of messages and I find myself hacking some half-baked solutions over and over again. Starting from today, this must end! In this post we’re going to find a solution for ASP.NET MVC 3.</p>
<h3>One single way to display messages</h3>
<p>This is the one and only requirement: </p>
<blockquote><p>In every scenario I want to be able to call ShowMessage() from my controller action and the message appears on the screen.</p>
</blockquote>
<h3>ShowMessage extension method</h3>
<p>To have a ShowMessage method in every controller action, we could implement it in a base controller class or create an extension method. Let’s try an extension method:</p>
<pre class="brush: csharp;">public static void ShowMessage(this Controller controller, MessageType messageType, string message, bool showAfterRedirect = false)
{
    var messageTypeKey = messageType.ToString();
    if (showAfterRedirect)
    {
        controller.TempData[messageTypeKey] = message;
    }
    else
    {
        controller.ViewData[messageTypeKey] = message;
    }
}</pre>
<p>All this method does is take a message type enum (Success, Warning or Error) and a message and store it in either ViewData or TempData, depending on the flag ‘showAfterRedirect’. TempData is for <a href="http://en.wikipedia.org/wiki/Post/Redirect/Get">Post-Redirect-Get</a> situations.</p>
<p>We can now call ShowMessage(). With this solution it’s only possible to store one type of message per request, but that should be enough (even more than one message is already troublesome).</p>
<h3>RenderMessages HTML Helper</h3>
<p>Creating messages is one thing, but what about displaying them? It’s also easy. Enter the RenderMessages() HTML helper:</p>
<pre class="brush: csharp;">/// &lt;summary&gt;
/// Render all messages that have been set during execution of the controller action.
/// &lt;/summary&gt;
/// &lt;param name=&quot;htmlHelper&quot;&gt;&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
public static HtmlString RenderMessages(this HtmlHelper htmlHelper)
{
    var messages = String.Empty;
    foreach (var messageType in Enum.GetNames(typeof(MessageType)))
    {
        var message = htmlHelper.ViewContext.ViewData.ContainsKey(messageType)
                        ? htmlHelper.ViewContext.ViewData[messageType]
                        : htmlHelper.ViewContext.TempData.ContainsKey(messageType)
                            ? htmlHelper.ViewContext.TempData[messageType]
                            : null;
        if (message != null)
        {
            var messageBoxBuilder = new TagBuilder(&quot;div&quot;);
            messageBoxBuilder.AddCssClass(String.Format(&quot;messagebox {0}&quot;, messageType.ToLowerInvariant()));
            messageBoxBuilder.SetInnerText(message.ToString());
            messages += messageBoxBuilder.ToString();
        }
    }
    return MvcHtmlString.Create(messages);
}</pre>
<p>It iterates through all possible message types, tries to find a message in either ViewData or TempData and creates a div with the message in it.<br />
  <br />Put the helper in the Layout page, add some css classes (.messagebox, .succes, .warning and .error) and we’re all set.</p>
<h3>What about AJAX?</h3>
<p>Now this is getting tricky. In our AJAX actions, we can still call ShowMessage(), but how should the message be displayed if we only return some JSON data or a partial view? One solution would be to wrap all AJAX results in a special JSON view result with the notification messages and the original result embedded. Drawback is that we have quite some work to do on the client-side to handle all this.</p>
<h3>HTTP headers to the rescue</h3>
<p>I discovered a very nice solution on StackOverflow: <a href="http://stackoverflow.com/questions/366311/how-do-you-handle-rails-flash-with-ajax-requests">use custom HTTP headers to store a message</a>. With the help of a global action filter we can check if there are messages in the ViewData dictionary and when the request was an AJAX request, copy the messages to a custom HTTP header.</p>
<pre class="brush: csharp;">/// &lt;summary&gt;
/// If we're dealing with ajax requests, any message that is in the view data goes to
/// the http header.
/// &lt;/summary&gt;
public class AjaxMessagesFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            var viewData = filterContext.Controller.ViewData;
            var response = filterContext.HttpContext.Response;

            foreach (var messageType in Enum.GetNames(typeof(MessageType)))
            {
                var message = viewData.ContainsKey(messageType)
                                ? viewData[messageType]
                                : null;
                if (message != null) // We store only one message in the http header. First message that comes wins.
                {
                    response.AddHeader(&quot;X-Message-Type&quot;, messageType);
                    response.AddHeader(&quot;X-Message&quot;, message.ToString());
                    return;
                }
            }
        }
    }
}</pre>
<p><a href="http://blogs.taiga.nl/martijn/wp-content/uploads/2011/05/x-message.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="x-message" border="0" alt="x-message" src="http://blogs.taiga.nl/martijn/wp-content/uploads/2011/05/x-message_thumb.png" width="704" height="304" /></a></p>
<p>Finally the message in the HTTP headers are displayed with a little bit of jQuery:</p>
<pre class="brush: js;">$(document).ready(function () {
    handleAjaxMessages();
});

function handleAjaxMessages() {
    $(document).ajaxSuccess(function (event, request) {
        checkAndHandleMessageFromHeader(request);
    }).ajaxError(function (event, request) {
        displayMessage(request.responseText, &quot;error&quot;);
    });
}

function checkAndHandleMessageFromHeader(request) {
    var msg = request.getResponseHeader('X-Message');
    if (msg) {
        displayMessage(msg, request.getResponseHeader('X-Message-Type'));
    }
}

function displayMessage(message, messageType) {
    $(&quot;#messagewrapper&quot;).html('&lt;div class=&quot;messagebox ' + messageType.toLowerCase() + '&quot;&gt;&lt;/div&gt;');
    $(&quot;#messagewrapper .messagebox&quot;).text(message);
}</pre>
<h3>Demo</h3>
<p>For a closer look <a href="http://demo.taiga.nl/notification/" target="_blank">check out the live demo</a> or download the VS2010 solution from <a href="https://github.com/martijnboland/MvcNotification">GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2011/05/03/keep-your-users-informed-with-asp-net-mvc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Developers are afraid to choose a different presentation technology</title>
		<link>http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/</link>
		<comments>http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 19:13:10 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/' addthis:title='Developers are afraid to choose a different presentation technology '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Paul Stovell wrote a very interesting post about choosing when to use HTML, Silverlight or WPF. In the comments, I noticed something that keeps coming back: WPF/Silverlight devs bashing HTML/Javascript as inferior and vice versa. I’ve heard these discussions a lot and in most cases, people’s preferences are based on the technology that they are <a href="http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/' addthis:title='Developers are afraid to choose a different presentation technology '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://www.paulstovell.com">Paul Stovell</a> wrote <a href="http://www.paulstovell.com/presentation-technologies">a very interesting post</a> about choosing when to use HTML, Silverlight or WPF. In the comments, I noticed something that keeps coming back: WPF/Silverlight devs bashing HTML/Javascript as inferior and vice versa. </p>
<p>I’ve heard these discussions a lot and in most cases, people’s preferences are based on the technology that they are most proficient in and not based on facts. The only fact here is that it’s awkward to leave your comfort zone and learn something that is totally different conceptually (stateful vs. stateless).</p>
<p>So when you ask a developer which presentation technology to choose, you should also weigh his background.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2011/04/07/developers-are-afraid-to-choose-a-different-presentation-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Considering ASP.NET MVC UI controls? Learn HTML and Javascript!</title>
		<link>http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/</link>
		<comments>http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:31:16 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WebForms]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/' addthis:title='Considering ASP.NET MVC UI controls? Learn HTML and Javascript! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Warning: highly subjective content ahead. In the recent weeks we’ve seen several control vendors come up with toolkits that target ASP.NET MVC. Personally, I don’t see anything that might make me starting to consider picking one of these toolkits to speed up development. Why on earth would I prefer a wrapper around jQuery UI or <a href="http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/' addthis:title='Considering ASP.NET MVC UI controls? Learn HTML and Javascript! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Warning: highly subjective content ahead.</p>
<p>In the recent weeks we’ve seen <a href="http://www.telerik.com/products/aspnet-mvc.aspx" target="_blank">several</a> <a href="http://mvc.devexpress.com/" target="_blank">control</a> <a href="http://www.syncfusion.com/products/aspnet-mvc" target="_blank">vendors</a> come up with toolkits that target ASP.NET MVC. Personally, I don’t see anything that might make me starting to consider picking one of these toolkits to speed up development. Why on earth would I prefer a wrapper around jQuery UI or shoehorning existing WebForms controls in MVC views?</p>
<p>The beauty of ASP.NET MVC is that it embraces the web as it is and this automatically involves HTML, CSS and Javascript. Don’t be afraid for that. The combination can be so powerful! Why aren’t there any large component vendors for PHP, Rails, Django etc? Isn’t it probably possible that these components are not required to do proper web development?</p>
<p>The control vendors seem to be targeting people who come from a Windows background that don’t want to learn HTML and Javascript, but from my experiences I can say that those people should really stick to WebForms.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2009/08/13/considering-asp-net-mvc-ui-controls-learn-html-and-javascript/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The problem of data grids in your web application</title>
		<link>http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/</link>
		<comments>http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 10:31:53 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[Web development]]></category>
		<category><![CDATA[Datagrid]]></category>
		<category><![CDATA[Excel]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/' addthis:title='The problem of data grids in your web application '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>I’m sure everybody who builds web applications uses grids to display data. There is nothing wrong with that per se, but you might not realize that you’re increasing the customers expectations to an unreachable level: Yes, all very nice and well, but can’t you make that thing work like Excel? My first thought is always <a href="http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/' addthis:title='The problem of data grids in your web application '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>I’m sure everybody who builds web applications uses grids to display data. There is nothing wrong with that per se, but you might not realize that you’re increasing the customers expectations to an unreachable level:</p>
<blockquote><p><font style="background-color: #ffffff">Yes, all very nice and well, but can’t you make that thing work like Excel?</font></p>
</blockquote>
<p>My first thought is always something like: “sure, if you supply us with the budget that the Excel team has”, but in practice we’ll always end up buying one of those bloated grid components or hacking our own solution where the customers is never 100% happy (because it still doesn’t work like Excel).</p>
<h3>The solution?</h3>
<p>Don’t format the data in a grid, but in a nicely formatted list and stay away from anything that resembles column headers. Add some simple search and filter options and people are happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2009/06/09/the-problem-of-data-grids-in-your-web-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC bridging the gap with PHP development?</title>
		<link>http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/</link>
		<comments>http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/#comments</comments>
		<pubDate>Thu, 07 May 2009 15:01:49 +0000</pubDate>
		<dc:creator>martijn</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/' addthis:title='ASP.NET MVC bridging the gap with PHP development? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>For a long time, there has been a distinct separation between ASP.NET and PHP developers. The platforms have been so fundamentally different and also have the surrounding cultures. Generally speaking, ASP.NET developers consider the PHP guys script kiddies with no real understanding of ‘real’ software development and the PHP guys saw ASP.NET developers as some <a href="http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/"> read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/' addthis:title='ASP.NET MVC bridging the gap with PHP development? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p><img title="Grand_Canyon6" style="display: inline" height="160" alt="Grand_Canyon6" src="http://blogs.taiga.nl/martijn/wp-content/uploads/2009/05/grand-canyon61.jpg" width="240" align="right" /> For a long time, there has been a distinct separation between <a href="http://www.asp.net">ASP.NET</a> and <a href="http://www.php.net">PHP</a> developers. The platforms have been so fundamentally different and also have the surrounding cultures. Generally speaking, ASP.NET developers consider the PHP guys script kiddies with no real understanding of ‘real’ software development and the PHP guys saw ASP.NET developers as some M$ infected bunch of people that have no clue of web standards, clean HTML or how to build a proper web app at all.</p>
<p>But times have changed. Both platforms are moving. PHP now has a whole bunch of application frameworks (<a href="http://framework.zend.com/">Zend</a>, <a href="http://cakephp.org/">CakePHP</a> etc.) that encourage good application design and also since PHP 5, the programming language has improved a lot. On the other hand, with the release of ASP.NET MVC, it has become much more easy to render clean HTML and we can finally leverage all the cool client-side toolkits that are out there without having to work around the quirks of <a href="http://stackoverflow.com/questions/46031/why-does-the-aspnet-web-forms-model-suck">Web Forms</a>.&#160; </p>
<p>So, with this movement, we see that both platforms grow towards each other. More and more developers come to have a look over the fence to see what’s happening at the neighbours place.<img title="bridge-gap" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="159" alt="bridge-gap" src="http://blogs.taiga.nl/martijn/wp-content/uploads/2009/05/bridgegap1.jpg" width="240" border="0" /></p>
<p>Two concrete examples:</p>
<ul>
<li>I’m consulting a little at a PHP shop that is moving towards .NET. They found Visual Studio and C# very cool, but the Web Forms issues regarding clean HTML etc. made it an absolute no-go. ASP.NET MVC is what made them switch.</li>
<li>Just watched the <a href="http://videos.visitmix.com/MIX09/T62F">ASP.NET MVC Mix 09 presentation</a> of <a href="http://blog.wekeroad.com/">Rob Conery</a> (Microsoft) and he showed lots of things that were clearly inspired by how PHP apps like <a href="http://wordpress.org">WordPress</a> work.</li>
</ul>
<ul>I like this movement! As a .NET developer, I find it very refreshing and inspiring to mix and mingle with ‘the other side’. There is a lot we can learn from each other to make better web applications.</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.taiga.nl/martijn/2009/05/07/aspnet-mvc-bridging-the-gap-with-php-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

