ksg
ksg

Reputation: 4067

Using Foolproof RequiredIf on multiplecondition

I have a dropdownlist named CustomerType with the the following values

Id     Name
1      Student
2      Non-Employed
3      Employed
4      SelfEmployed

and I have one more property in my viewmodel public string CompanyAddress{ get; set; }

My goal is to make CompanyAddress required if dropdownlist has values 3 or 4

I have tried the following but gets error Cannon have duplicate RequiredIf

    [RequiredIf("customerTypeID", 3, ErrorMessage = "Please enter company address")]
    [RequiredIf("customerTypeID", 4, ErrorMessage = "Please enter company address")]
    public string CompanyAddress { get; set; }

Upvotes: 1

Views: 5021

Answers (2)

Dante Spectre
Dante Spectre

Reputation: 1

For the "TypeError: Cannot read properties of undefined (reading 'value')" problem, add a hidden input element on your page for that new CompanyAddressRequired property.

<input type="hidden" id="CompanyAddressRequired"/>  

I'm still working on getting the switchable field to provide validation summaries on my front end but this resolves the JS error.

Upvotes: 0

Micteu
Micteu

Reputation: 461

This will put logic in your model (which is usually a no-no), but it will work. You could change your validation to be like this:

[RequiredIf("CompanyAddressRequired", true, ErrorMessage = "Please enter company address")]

And then have a property with a getter like this:

public bool CompanyAddressRequired
{
    get
    {
        return customerTypeID == 3 || customerTypeID == 4;
    }
}

Upvotes: 4

Related Questions