Here is the updated code
Class file
public class ConditionalRequired : ValidationAttribute, IClientValidatable
{
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var mcvrTwo = new ModelClientValidationRule();
mcvrTwo.ValidationType = "contactnovalid";
mcvrTwo.ErrorMessage = "Contact No is not valid.";
mcvrTwo.ValidationParameters.Add
("contactnoregex", @"\b\d{10}\b");
return new List<ModelClientValidationRule> { mcvrTwo };
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var obj = validationContext.ObjectInstance as Customer;
if (obj.CustomerID == 1)
{
return ValidationResult.Success;
}
return new ValidationResult("Contact No is not valid");
}
}
CSHTML file
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="~/Scripts/MicrosoftAjax.js"></script>
<script type="text/javascript">
$.validator.addMethod("contactnovalid", function (value, element, contactnoregex) {
var patt = new RegExp(contactnoregex);
if (patt.test(value))
return true;
return false;
});
$.validator.unobtrusive.adapters.add("contactnovalid", ["contactnoregex"], function (options) {
options.rules["contactnovalid"] = options.params.contactnoregex;
options.messages["contactnovalid"] = options.message;
});
</script>