Free Web Development Online Tutorials, Learn to Code
Learn MVC C#, MVC Tutorial for Beginners, Model View Controller MVC Form Validation Example MVC Form Validation using DataAnnotations
In application development most of the time you work with form, where you accept data from user, now before you can store data into database, you have to validate the data.

In this article you will learn how to implement form validation in the ASP.NET MVC application

How to validate Form in MVC ?

You will learn Form Validation in MVC, how to implement DataAnnotations attributes to implement validations. DataAnnotations provides built-in validation attributes for different type of data and validation rules.

DataAnnotations classes comes under System.ComponentModel.DataAnnotations; namespace In MVC we can write validation on each property of model class, we fix the data type, data length etc, let's look at the example below

Following model we have two properties guest name and email, we learn required field validation and email validation, as you can see on each property we have set the attribute.

using System.ComponentModel.DataAnnotations;    
public class GuestModel 
    [Required(ErrorMessage = "Your name Required")]
    [StringLength(50, ErrorMessage = "5 to 50 characters.", MinimumLength = 3)]
    public string GuestName { get; set; }
    [Required(ErrorMessage = "Email Required")] 
    [EmailAddress(ErrorMessage = "Invalid email")]
    public string GuestEmail { get; set; }

DataAnnotations validation attributes in MVC

Attribute Description
Required this will indicates that the property is a required field
EmailAddress Validates with email address format
RegularExpression Specifies that the field value must match with specified Regular Expression
FileExtension Used for Validating with file extension
MaxLength String: maximum length for a string field
MinLength String: minimum length for a string field
Phone Specifies that the field is a phone number using regular expression for phone numbers
CreditCard Specifies that the specified field is a credit card number
CustomValidation This is for building custom validation rules as per business requirement, then can use that attribute as custom validator

ValidationMessage, ValidationSummary in ASP.NET MVC
ValidationMessageFor is in-built for each Html control in MVC, whatever ErrorMessage specified in the model, that will appear on screen as validation message.

You can display all validation message together or each message on field itself. Here is an example how you can display the validation message exactly above the field.

@model AppName.Models.GuestModel
<div>Your Email</div>
@Html.TextBoxFor(m => m.GuestEmail, new { style = "width:300px;" })
<div>@Html.ValidationMessageFor(m => m.GuestEmail)</div>

if you want to display all validation message together, then use @Html.ValidationSummary() somewhere inside the form.

Range Validation in ASP.Net MVC
In Range validation you can specify minimum and maximum number (or any other data type like date, double etc.)

[Required(ErrorMessage = "Your age Required")]
[Range(22, 60, ErrorMessage = "Age between 22 to 60 only")]
public int Age { get; set; }

Custom Validation in ASP.Net MVC
Custom validator is required when you have some complex business logic to check with backend data, which may differ from user to user.

In such situation you have to write a custom class inherited from ValidationAttribute, here is the example

using System.ComponentModel.DataAnnotations;
public class WTRCustomValidator : ValidationAttribute
protected override ValidationResult IsValid(object value,
ValidationContext validationContext) { if (value != null) { bool result = false; string userInput = value.ToString(); // here you have the value from user input // write whatever logic you want if (result) { return ValidationResult.Success; } else { return new ValidationResult("Incorrect data"); } } else { return new ValidationResult(validationContext.DisplayName
+ " is required"); } } }

Now you can use the above custom validator with right property in your model as an attribute. here in example we are checking if BusinessCode value is correct

    public class CustomerModel  
        public string BusinessCode { get; set; }                 

Hope you learned all validation technique in Asp.Net MVC.

Form Validation in MVC