How to validate properties across Models without repeating the validation logic
- by Mano
Hello All,
I am building a ASP.NET Mvc app. I have a Data model say User
public class user
{
public int userId {get; private set};
public string FirstName {get; set;}
}
The validation to be done is that the firstname cannot exceed 50 characters.
I have another presentation model in which i have the property FirstName too. I do not want to repeat the validation logic in both the models. I want to have it in one place and that should be it.
I can do it in a simpler way by adding a function which can be called while setting the property like
private string firstName;
public string FirstName
{
get
{
return firstName;
}
set
{
if (PropertyValidator.ValidName(value)) // assuming ValidName exists and it will throw an exception if the value is not valid
{
firstName = value;
}
}
}
But I am looking for something much simpler so that I do not need to add this for every property I need to have it validated. I looked at ValidationAttribute but then again I can validate this only from a controller (ModelState.IsValid). Since this model could be used by some other type of apps like console app, I could not choose that. But if there is a way to use the Mvc's ModelState.IsValid from outside of a controller, that would be awesome. Any suggestions are greatly appreciated.
Thanks!!