How to validate properties across Models without repeating the validation logic

Posted by Mano on Stack Overflow See other posts from Stack Overflow or by Mano
Published on 2010-06-06T15:30:50Z Indexed on 2010/06/06 15:42 UTC
Read the original article Hit count: 190

Filed under:
|
|
|

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!!

© Stack Overflow or respective owner

Related posts about c#

Related posts about asp.net-mvc