DEV Community

loading...
Cover image for Easy Model Validator csharp

Easy Model Validator csharp

Ali Alp
“Take it easy” is nonsense , take it as hard as you can and don’t let it go :)
Updated on ・2 min read

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 :)

Discussion (0)