DEV Community

Cover image for Easy Model Validator csharp
Ali Alp
Ali Alp

Posted on • Edited on

2 1

Easy Model Validator csharp

This article will explain a cool way of validating a model or any object by using the Validation attributes To validate a Model in MVC you make use of Model Validation Attributes like this

class ContactModel
{
[Required, RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
    @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
    @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$",
ErrorMessage = "Email Format Error")]

public string Email { get; set; }

[Required] public string Name { get; set; }

}

Enter fullscreen mode Exit fullscreen mode

and then you will validate it like this

public class ContactController : Controller
    {
        [HttpPost]
        public async IActionResult AddContact(ConatctModel model)
        {
            if (!ModelState.IsValid){
               // throw new Exception("Model Failed") 
            }

            //The model is valid 
            //do your logic here
        }
    }
Enter fullscreen mode Exit fullscreen mode

but what if you want to use the ContactModel class in your own logic and not in the MVC Controller but still you may need to validate the model before usage or maybe you have a normal POCO class and you want to validate that in clean way in a scenario like this

public class ContactHelper
    {
        public void ContactHandler(ContactModel model)
        {
            if (!model.IsValid){
               // throw new Exception("Model Failed") 
            }

            //The model is valid 
            //do your logic here
        }
    }
Enter fullscreen mode Exit fullscreen mode

this was the motivation to create the EasyModelValidatorExtension which can help you validate any object by simply adding the validation attributes in that object

 public static class EasyModelValidatorExtension
     {
        public static bool IsValid<T>(this T model)
        {
            try
            {
                var vc = new ValidationContext(model, null, null);
                var result = Validator.TryValidateObject(model, vc, null, true);
                return result;
            }
            catch (Exception e)
            {
                throw new ModelValidationException("Model Validation has Failed", e);
        }
     }
}
Enter fullscreen mode Exit fullscreen mode

you can add this extension in your project or simply use EasyModelValidator Nuget

dotnet add package EasyModelValidator
OR 
Install-Package EasyModelValidator

Enter fullscreen mode Exit fullscreen mode

you can find the Source code here

Happy coding :)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more