skip to content
  • 18 June 2013

    Five Essential Front-End Tools That Should be Used with Modern MVC Projects

    Microsoft is doing a good job in shipping standard front-end libraries with Visual Studio 2012 “ASP.NET MVC 4 Web Application” and “ASP.NET Web Forms Application” templates, they are raising the bar for the .NET web developers.

    The VS template is a good starting base, however, I have been adding the libraries of this post to every new web project, they act as a completion to the ones shipped with VS and I wanted to share them with you.

    Read the rest of this entry »

  • 16 June 2013

    You should unit test your controller, NOT!

    Unit Testing MVC

    Unit testing per se is a controversial topic, what you should unit test is another controversial topic. The topic of this post started by a short conversation during a .NET London Group meeting back in 2010, I thought about it and then gave it more thoughts, I started using it in my projects, then now I have enough confidence to share my thoughts. Here is my opinion, if you agree or disagree, then please do comment.

    Read the rest of this entry »

  • 16 June 2013

    Three Steps to Get Fat-Razor MVC Views on Diet

    Fat Razor in MVC

    Let me first define the terms that I will be referring to:

    Presentation Code: Is the minimal code in a view that is necessary to display visual elements, but does not take any business decision. This is a fictional simple example:

        // Business Logic Code. This code understands how the business works
        // (don't do this)
        @if (Model.IsMonthly && !Model.IsPaid && Model.Payment >= 12 && ...)
        {
    	    <p>Some warning message</p>
        }
        
        // Presentation Code. This code is only concerned with whether to
        // show or hide a UI element.
        @if (Model.ShouldWarn)
        {
    	    <p>Some warning message</p>
        }
    

    Fat-Razor: I’ve coined this term to define ASP.NET Razor views with a lot of Razor/C# code that is not presentation code. This is about the Razor/C# code specifically and not about HTML/CSS/JS.

    Model: This is an overloaded term. However, in this context, it is an object of data representation such as a record in the database.

    Viewmodel: They are data transfer objects that are meant to be view-specific and to carry exactly what the view needs, no less and no more. Generally, viewmodels are non-reusable and each vm is meant to to be tightly coupled to one view, however, there are exceptions depending on what you are doing.

    To give you a flavour of a model and a viewmodel:

    // An example of a model
    public class Person
    {
        public Guid PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public short YearOfBirth { get; set; }
        public DateTime LastAuth { get; set; }
        // This might represent a one-to-many db relationship
        public Order[] Orders { get; set; }
    }
    
    // An example of a viewmodel
    public class ProfileViewModel
    {
        // Doesn't necessarily need an id
    
        // Combined first and last name
        public string Name { get; set; }
        // Calculated from YearOfBirth
        public short Age { get; set; }
        // E.g. "One day ago" and constructed from LastAuth
        public string LastSeen { get; set; }
        // Calculated by projections on Orders
        public short NumberOfAllOrders { get; set; }
        public short NumberOfUndeliveredOrders { get; set; }
    }
    

    Read the rest of this entry »

  • 23 September 2008

    How Not To Compromise Security Through ASP.NET Validators

    Security Holes in ASP.NET Validator Controls

    I have explained in The Three Steps of Building an ASP.NET Validator Control, how to build a validator control from the ground up in three easy steps and in a reusable format. I highly recommend reading it before going any further.

    Here I am discussing the common validator control security holes that might compromise your forms security when left untreated.

    Read the rest of this entry »

    Tagged under: | 1 comment
  • 22 September 2008

    The Three Steps of Building an ASP.NET Validator Control

    Credit Card Number ASP.NET Validator

    The standard ASP.NET validator controls such as the RequiredFieldValidator or the RegularExpressionValidator do not cover all validation requirements, so usually developers tend to create a CustomValidator for such scenarios.

    A major problem with the CustomValidator is reusability, as if you wanted to use the validator in another project then there would be some copying and pasting and code duplication, then you have to maintain multiple versions of the same control.

    The solution, as you have guessed from the title, is to build your own validator control when possible to promote reusability.

    In this post I will be showing you in three simple steps how to build an ASP.NET validator control and take credit card number format check to show by example. I will also be building the architecture so that your validator and other validators that you will develop in the future could be as reusable as possible.

    How to Check a Credit Card Format

    Luhn check is an algorithm that checks if a credit card number is valid (format wise), so in practice, before you even think of doing any further processing on the credit card, this check should be satisfied.

    Read the rest of this entry »

    Tagged under: | 8 comments