Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC Modify view model property before validation

I've been googling like crazy without result, maybe I'm just missing the correct keywords.

I have a class with a custom validation attribute on a property. I want to "clean" the value before validation, removing the white-space and special characters that we accept but that we don't want to save to the database.

public class PersonViewModel
{
    [SocialSecurityNumberLuhn(ErrorMessage = "Incorrect social security number")]
    public string SocialSecurityNumber { get; set; }
}

I would want to do something like this:

public class PersonViewModel
{
    [CleanWhiteSpace]
    [SocialSecurityNumberLuhn(ErrorMessage = "Incorrect social security number")]
    public string SocialSecurityNumber { get; set; }
}

For example 1985-03-15-1234 should be saved and validated as 19850315-1234.

Any suggestions? What's the neatest approach?

like image 207
Tiax Avatar asked May 20 '26 19:05

Tiax


1 Answers

If you change the auto-implemented property into a manual-implemented property then you can perform the "cleaning" step when the value is set, so it can only be stored in the model in a "clean" state. Something like this:

public class PersonViewModel
{
    private string _socialSecurityNumber;

    [SocialSecurityNumberLuhn(ErrorMessage = "Incorrect social security number")]
    public string SocialSecurityNumber
    {
        get { return _socialSecurityNumber; }
        set
        {
            _socialSecurityNumber = CleanSocialSecurityNumber(value);
        }
    }
}
like image 50
David Avatar answered May 23 '26 08:05

David



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!