<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title/>
    <description></description>
    <link>https://blog.tiagosalgado.com/</link>
    <atom:link href="https://blog.tiagosalgado.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 08 Sep 2020 21:42:35 +0000</pubDate>
    <lastBuildDate>Tue, 08 Sep 2020 21:42:35 +0000</lastBuildDate>
    <generator>Jekyll v3.9.0</generator>
    
      <xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item>
        <title>Chrome dev tools dark theme</title>
        <description>&lt;p&gt;After seeing Iris Classon post about how to &lt;a href="http://irisclasson.com/2014/09/01/styling-chrome-dev-tools/" target="_blank"&gt;style Chrome Dev Tools&lt;/a&gt;, I knew I needed to give it a try.&lt;/p&gt;

&lt;p&gt;I love Visual Studio dark theme, and having the same in Chrome is a joy for my eyes. So I’ve done it, and I’m happy.&lt;/p&gt;

&lt;p&gt;&lt;img src="/content/chrome-dev-tools-dark-theme.png" alt="chrome dev tools" class="img-responsive" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Add the extension &lt;a href="https://chrome.google.com/webstore/detail/devtools-theme-zero-dark/bomhdjeadceaggdgfoefmpeafkjhegbo" target="_blank"&gt;Zero Dark Matrix&lt;/a&gt; from Chrome Web store&lt;/li&gt;
  &lt;li&gt;Enable the Developer experiments (chrome://flags &amp;gt; Enable Developer Tools experiments) and click “Relaunch Now” at the bottom&lt;/li&gt;
  &lt;li&gt;Go to developer tools settings &amp;gt; Experiments &amp;gt; and tick Allow custom UI themes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks &lt;a href="http://irisclasson.com/"&gt;Iris&lt;/a&gt; for the tip.&lt;/p&gt;
</description>
        <pubDate>Tue, 02 Sep 2014 12:34:25 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2014/09/02/2014-09-02-chrome-dev-tools-dark-theme/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2014/09/02/2014-09-02-chrome-dev-tools-dark-theme/</guid>
        
        <category>chrome</category>
        
        <category>dev</category>
        
        
        <category>others</category>
        
      </item>
    
      <item>
        <title>Add Validation rules with FluentValidation</title>
        <description>&lt;p&gt;One scenario we have in almost all applications where requires user inputs, are validation rules. We have lot of different ways to implement validation (both server and client sides), and one of these ways is using a library called &lt;a href="https://fluentvalidation.codeplex.com" target="_blank"&gt;FluentValidation&lt;/a&gt;, where it uses lambda expressions to build all validation rules.&lt;/p&gt;

&lt;p&gt;To integrate it, we can get the package from Nuget and add it to our project:&lt;/p&gt;

&lt;p&gt;&lt;img src="/content/nuget.png" alt="fluentvalidation nuget" class="img-responsive" /&gt;&lt;/p&gt;

&lt;p&gt;This will add FluentValidation references.&lt;/p&gt;

&lt;p&gt;For this example, we’ll use a simple model such as:&lt;/p&gt;

&lt;pre class="brush: csharp; title: ; notranslate" title=""&gt;public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public int Age { get; set; }
}
&lt;/pre&gt;

&lt;p&gt;Now, to create our validator, we need to have a class who inherits from AbstractValidator&lt;T&gt;, where T in this case will the Person.&lt;/T&gt;&lt;/p&gt;

&lt;pre class="brush: csharp; title: ; notranslate" title=""&gt;using FluentValidation;
using FluentValidationExample.Models;
namespace FluentValidationExample.Validators
{
    public class PersonValidator : AbstractValidator&amp;lt;Person&amp;gt;
    {
    }
}
&lt;/pre&gt;

&lt;p&gt;Having our class created, we can now define the rules to validate a Person entity in the validator class constructor. For this example, I’ll add two rules, one to validate if the first name is not empty and other to make sure we have a age greater than 18.&lt;/p&gt;

&lt;pre class="brush: csharp; title: ; notranslate" title=""&gt;public PersonValidator()
{
    RuleFor(d =&amp;gt; d.FirstName)
        .NotEmpty()
        .WithMessage("First name cannot be empty");

    RuleFor(d =&amp;gt; d.Age)
        .Must(AgeMustBeGreaterThan18)
        .WithMessage("Age must be greater than 18");
}

private bool AgeMustBeGreaterThan18(int age)
{
    return age &amp;gt; 18;
}
&lt;/pre&gt;

&lt;p&gt;FluentValidation already includes some built-in validations, so for our first validation we can use the NotEmpty() method. For the second validation, we’ve created a new method who verifies the Age property value and makes sure is greater than 18. If not, it will throw an error.&lt;/p&gt;

&lt;p&gt;In this case, the validator will go through all rules and will send the result back with any errors, but we can decide to stop on the first failure.&lt;/p&gt;

&lt;pre class="brush: csharp; title: ; notranslate" title=""&gt;public PersonValidator()
{
    RuleFor(d =&amp;gt; d.FirstName)
        .Cascade(CascadeMode.StopOnFirstFailure)
        .NotEmpty()
        .WithMessage("First name cannot be empty");

    RuleFor(d =&amp;gt; d.Age)
        .Must(AgeMustBeGreaterThan18)
        .WithMessage("Age must be greater than 18");
}

private bool AgeMustBeGreaterThan18(int age)
{
    return age &amp;gt; 18;
}
&lt;/pre&gt;

&lt;p&gt;Having the validator created, we now need to call it when we want to validate all rules for the Person model, check if there are any errors, and display (and log) those to the user.&lt;/p&gt;

&lt;pre class="brush: csharp; title: ; notranslate" title=""&gt;static void Main(string[] args)
{
    var person = new Person
    {
        FirstName = "",
        LastName = "Salgado",
        Age = 17, // I wish
        Address = "London, UK"
    };

    var validator = new PersonValidator();

    var validationResult = validator.Validate(person);

    if (!validationResult.IsValid)
    {
        validationResult.Errors.ToList().ForEach(p =&amp;gt; Console.WriteLine(p.ErrorMessage));
    }

    Console.Read();
}
&lt;/pre&gt;

&lt;p&gt;I’m not defining the FirstName and i’ve set the age as 17 to force both rules to fail, so the output will be both error messages:&lt;/p&gt;

&lt;p&gt;&lt;img src="/content/console_output.png" alt="console output" class="img-responsive" /&gt;&lt;/p&gt;

&lt;p&gt;This is just a example of how we can add FluentValidation to a project, but much more advanced validations can be done, so I recommend you to read the &lt;a href="https://fluentvalidation.codeplex.com/documentation" target="_blank"&gt;documentation &lt;/a&gt;and follow the examples available in the project page.&lt;/p&gt;
</description>
        <pubDate>Sun, 31 Aug 2014 00:19:19 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2014/08/31/2014-08-31-add-validation-rules-with-fluentvalidation/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2014/08/31/2014-08-31-add-validation-rules-with-fluentvalidation/</guid>
        
        <category>.net</category>
        
        <category>C#</category>
        
        <category>FluentValidation</category>
        
        
        <category>dev</category>
        
      </item>
    
      <item>
        <title>Using Visual Studio 2013 with TFS and Git repositories on same project</title>
        <description>&lt;p&gt;With Visual Studio 2013 is a nightmare to keep a git repository but having TFS as a source control plugin activated when we load the solution. Every time we open the solution, by default Visual Studio will select the Git provider and ignore completely TFS (oh, irony…)&lt;/p&gt;

&lt;p&gt;To solve that, I had to move out the .git folder to an external folder and point the git dir to the actual source code folder.&lt;/p&gt;

&lt;p&gt;So an example is:&lt;/p&gt;

&lt;pre class="brush: plain; gutter: false; title: ; notranslate" title=""&gt;C:\Git\ (where I have my different .git repositories per project stored)
-- C:\Git\ProjectOne\.git
-- C:\Git\ProjectTwo\.git
&lt;/pre&gt;

&lt;pre class="brush: plain; gutter: false; title: ; notranslate" title=""&gt;C:\Code (where I have all projects source code)
-- C:\Code\ProjectOne\.git (this is a file, not a folder anymore)
-- C:\Code\ProjectTwo\.git (this is a file, not a folder anymore)
&lt;/pre&gt;

&lt;p&gt;So, this .git file has to be generated as:&lt;/p&gt;

&lt;pre class="brush: bash; title: ; notranslate" title=""&gt;$ echo "gitdir: /git/ProjectOne/.git" &amp;gt; .git
&lt;/pre&gt;

&lt;p&gt;After doing this, you can open Visual Studio and TFS will be selected by default. You still be able to run a “git status” or any git command as you always did before.&lt;/p&gt;
</description>
        <pubDate>Tue, 12 Aug 2014 15:17:31 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2014/08/12/using-visual-studio-2013-with-tfs-and-git-repositories-on-same-project/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2014/08/12/using-visual-studio-2013-with-tfs-and-git-repositories-on-same-project/</guid>
        
        <category>git</category>
        
        <category>tfs</category>
        
        <category>visual studio</category>
        
        
        <category>others</category>
        
      </item>
    
      <item>
        <title>dotnetConf &amp;#8211; 25th and 26th of June 2014</title>
        <description>&lt;p&gt;&lt;a href="http://channel9.msdn.com"&gt;Channel9&lt;/a&gt; is hosting on the 25th and 26th of June the &lt;a href="http://www.dotnetconf.net"&gt;dotnetConf&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://www.dotnetconf.net"&gt;dotnetConf&lt;/a&gt; is a free, online conference for helping developers create desktop, mobile, web, and cloud-based applications using the .NET Framework.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are great sessions planned so is totally worth it to watch. Go to &lt;a href="http://www.dotnetconf.net"&gt;dotnetConf&lt;/a&gt; and register, it takes just a few seconds.&lt;/p&gt;
</description>
        <pubDate>Sat, 21 Jun 2014 01:54:16 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2014/06/21/dotnetconf-25th-and-26th-of-june-2014/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2014/06/21/dotnetconf-25th-and-26th-of-june-2014/</guid>
        
        <category>.net</category>
        
        
        <category>.net</category>
        
      </item>
    
      <item>
        <title>Alert users when they have lost internet connectivity with Offline.js</title>
        <description>&lt;p&gt;To alert users when they’ve lost internet connectivity, we can use a really tiny library (only 3kb) called &lt;a href="http://github.hubspot.com/offline/" target="_blank"&gt;Offline.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So, what is Offline.js?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Offline.js is a library to automatically alert your users when they’ve lost internet connectivity, like Gmail.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;It captures AJAX requests which were made while the connection was down, and remakes them when it’s back up, so your app reacts perfectly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is really straightforward to add implement this on our web applications.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Download &lt;a href="https://raw.github.com/HubSpot/offline/master/js/offline.js" target="_blank"&gt;Offline.js&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Download a theme. For that, choose yours &lt;a href="http://github.hubspot.com/offline/docs/welcome/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Add the JS and CSS files to your pages.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Add a div to be used to display the notification (see full code for an example)&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="live-demo"&gt;&lt;a href="http://jsfiddle.net/TiagoSalgado/qYsAj/embedded/result/" target="_blank"&gt;Live Demo&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Ahh, and if you want to allow users to play Snake while they don’t have connection, just change the option “game” to true &#128578;&lt;/p&gt;

&lt;p&gt;Full code:
&lt;script src="https://gist.github.com/tiagosalgado/7266986.js"&gt; &lt;/script&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 01 Nov 2013 18:00:31 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2013/11/01/alert-users-when-they-have-lost-internet-connectivity/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2013/11/01/alert-users-when-they-have-lost-internet-connectivity/</guid>
        
        <category>javascript</category>
        
        
        <category>others</category>
        
      </item>
    
      <item>
        <title>Navigate between modules on DotNetNuke</title>
        <description>&lt;p&gt;On DotNetNuke, each folder inside DesktopModules are considered Modules (and they can’t communicate directly between each others).&lt;/p&gt;

&lt;p&gt;Imagine you have:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module1&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;View.ascx&lt;/li&gt;
  &lt;li&gt;Stuff.ascx (this is a module definition only accessible by ControlKey)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need to open Stuff.ascx from View.ascx, you can achieve this easily using Globals.Navigate() and specifying the ControlKey, because you have the TabID and ModuleID of the current Module.&lt;/p&gt;

&lt;p&gt;But, when we want to do the same but in different Modules (folders) is more complicate.&lt;/p&gt;

&lt;p&gt;So if you have something like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module1&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;View.ascx (assume this has a aspx page associated)&lt;/li&gt;
  &lt;li&gt;Stuff.ascx (this is a module definition only accessible by ControlKey)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Module2&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OtherStuff.ascx (assume this has a aspx page associated)&lt;/li&gt;
  &lt;li&gt;MoreStuff.ascx (this is a module definition only accessible by ControlKey)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And you want on View.ascx or Stuff.ascx (Module1) to go to MoreStuff.ascx (Module2), we need to get the TabID, ModuleID (of Module2), and the controlKey.&lt;/p&gt;

&lt;p&gt;We have the ControlKey, because we can specify that in DNN (Extensions Manager or DNN manifest file for compiled modules), but the TabID and ModuleID are dynamic, so is different per DNN website.&lt;/p&gt;

&lt;p&gt;So, to be able to navigate across different modules, we need to find the TabID and ModuleID related to the module we want to access.&lt;/p&gt;

&lt;p&gt;This code would help to do that:
&lt;script src="https://gist.github.com/tiagosalgado/d643c31ccb3d3de3347671fc87eb2b95.js"&gt; &lt;/script&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 17 Oct 2013 12:21:32 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2013/10/17/navigate-between-modules-on-dotnetnuke/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2013/10/17/navigate-between-modules-on-dotnetnuke/</guid>
        
        <category>Dotnetnuke</category>
        
        
        <category>.net</category>
        
      </item>
    
      <item>
        <title>ASP.NET and Web Tools for Visual Studio 2013 Release Notes</title>
        <description>&lt;p&gt;Microsoft ASP.NET Team has made available the release notes of ASP.NET and Web Tools for Visual Studio 2013.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC1" target="_blank"&gt;Installation Notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC2" target="_blank"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC4" target="_blank"&gt;Software Requirements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New Features in ASP.NET and Web Tools for Visual Studio 2013&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC6" target="_blank"&gt;One ASP.NET&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#newproj" target="_blank"&gt;New Web Project Experience&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#scaffold" target="_blank"&gt;ASP.NET Scaffolding&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#browser-link" target="_blank"&gt;Browser Link&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#web-editor" target="_blank"&gt;Visual Studio Web Editor Enhancements&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#waws" target="_blank"&gt;Windows Azure Web Sites Support in Visual Studio&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#publish" target="_blank"&gt;Web Publish Enhancements&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#nuget" target="_blank"&gt;NuGet 2.7&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC9" target="_blank"&gt;ASP.NET Web Forms&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC10" target="_blank"&gt;ASP.NET MVC 5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC11" target="_blank"&gt;ASP.NET Web API 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC13" target="_blank"&gt;ASP.NET SignalR&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC8" target="_blank"&gt;ASP.NET Identity&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#TOC7" target="_blank"&gt;Microsoft OWIN Components&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#ef6" target="_blank"&gt;Entity Framework 6&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes#knownissues" target="_blank"&gt;Known Issues and Breaking Changes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can click in each link or check the full page &lt;a href="http://www.asp.net/visual-studio/overview/2013/release-notes"&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Thu, 17 Oct 2013 12:11:26 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2013/10/17/asp-net-and-web-tools-for-visual-studio-2013-release-notes/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2013/10/17/asp-net-and-web-tools-for-visual-studio-2013-release-notes/</guid>
        
        <category>asp.net</category>
        
        <category>visual studio</category>
        
        
        <category>asp.net</category>
        
      </item>
    
      <item>
        <title>Developing ASP.NET MVC 4 Web Applications Jump Start</title>
        <description>&lt;p&gt;For those who wish to review the sessions or couldn’t attend to the “Developing ASP.NET MVC Web Applications Jump Start”, provided by Jon Galloway (&lt;a href="http://twitter.com/jongalloway" target="_blank"&gt;@jongalloway&lt;/a&gt;) and Christopher Harrison (&lt;a href="http://twitter.com/geektrainer" target="_blank"&gt;@geektrainer&lt;/a&gt;) the video recordings are now available on &lt;a href="http://www.microsoftvirtualacademy.com/" target="_blank"&gt;MVA&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can find it the whole course here: &lt;a href="http://www.microsoftvirtualacademy.com/training-courses/developing-asp-net-mvc-4-web-applications-jump-start"&gt;http://www.microsoftvirtualacademy.com/training-courses/developing-asp-net-mvc-4-web-applications-jump-start&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Videos available on Channel9 (&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps"&gt;http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/01"&gt;Developing ASP.NET MVC 4 Web Applications: (01) Introduction to MVC 4&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/02"&gt;Developing ASP.NET MVC 4 Web Applications: (02) Developing ASP.NET MVC 4 Models&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/03"&gt;Developing ASP.NET MVC 4 Web Applications: (03) Developing MVC 4 Controllers&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/04"&gt;Developing ASP.NET MVC 4 Web Applications: (04) Developing ASP.NET MVC 4 Views&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/05"&gt;Developing ASP.NET MVC 4 Web Applications: (05) Integrating JavaScript and MVC 4&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/06"&gt;Developing ASP.NET MVC 4 Web Applications: (06) Implementing Web APIs&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/07"&gt;Developing ASP.NET MVC 4 Web Applications: (07) Deploying to Windows Azure&lt;/a&gt;{.title}&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Series/Dev-ASP-MVC4-WebApps/08"&gt;Developing ASP.NET MVC 4 Web Applications: (08) Visual Studio 2013/MVC 5 Sneak Peek&lt;/a&gt;{.title}&lt;/p&gt;
</description>
        <pubDate>Tue, 01 Oct 2013 21:16:03 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2013/10/01/developing-asp-net-mvc-4-web-applications-jump-start/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2013/10/01/developing-asp-net-mvc-4-web-applications-jump-start/</guid>
        
        <category>asp.net</category>
        
        <category>asp.net mvc</category>
        
        
        <category>asp.net</category>
        
      </item>
    
      <item>
        <title>Error on GetSkin() loading a DotNetNuke website</title>
        <description>&lt;p&gt;Trying to load a DotNetNuke website, I was getting an error on Default.aspx page in this specific line:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Server Error in ‘/’ Application.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Object reference not set to an instance of an object&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Description: An unhandled exception occurred during the execution of the current web request. Please review the  stack trace for more information about the error and where it originated in the code.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;span&gt;Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;pre class="brush: csharp; title: ; notranslate" title=""&gt;ctlSkin = IsPopUp ? UI.Skins.Skin.GetPopUpSkin(this) : UI.Skins.Skin.GetSkin(this); &lt;/pre&gt;

&lt;p&gt;(Line 666, coincidence? Eheh)&lt;/p&gt;

&lt;p&gt;The error was related to DNNMenu web user control, saying that couldn’t found the .ascx file.&lt;/p&gt;

&lt;p&gt;After struggling a bit, I’ve found my DesktopModules folder was being considered as a Virtual Directory on IIS and pointing to a wrong path. So after fixing, pointing out to the right path, everything was working again &#128578;&lt;/p&gt;
</description>
        <pubDate>Fri, 02 Aug 2013 23:36:56 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2013/08/02/error-on-getskin-loading-a-dotnetnuke-website/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2013/08/02/error-on-getskin-loading-a-dotnetnuke-website/</guid>
        
        <category>Dotnetnuke</category>
        
        
        <category>.net</category>
        
      </item>
    
      <item>
        <title>Build 2013 &amp;#8211; Sessions available</title>
        <description>&lt;p&gt;Build 2013 is over, and now is time to see some sessions we couldn’t watch live.&lt;/p&gt;

&lt;p&gt;All sessions are now available on Channel9 to download and watch when you want.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://channel9.msdn.com/Events/Build/2013?direction=asc#tab_sortBy_day" target="_blank"&gt;Channel9 – Build 2013 Sessions List&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 01 Jul 2013 08:36:44 +0000</pubDate>
        <link>https://blog.tiagosalgado.com/2013/07/01/build-2013-sessions-available/</link>
        <guid isPermaLink="true">https://blog.tiagosalgado.com/2013/07/01/build-2013-sessions-available/</guid>
        
        <category>.net</category>
        
        <category>build 2013</category>
        
        <category>dev</category>
        
        <category>microsoft</category>
        
        
        <category>others</category>
        
      </item>
    
  </channel>
</rss>