Divercy LookupPeriodDateValidationAttribute,DisableDateValidationAttribute
1. Create a new ValidationAttribute class
eg : LookupPeriodDateValidationAttribute,DisableDateValidationAttribute
or search MustBeTrueAttribute on sana ,
public class LookupPeriodDateValidationAttribute : ValidationAttribute, IClientValidatable
{
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule();
rule.ValidationType = "lookupperiod";
rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
return new[] { rule };
}
}
1.1
IsValid() // this method will hit when submitting the order.
public override bool IsValid(object value)
{
if (value == null)
return true;
if (value is Date)
{
var date = (Date)value;
return date >= Date.Now;
}
else if (value is Date?)
{
var date = (Date?)value;
return date.Value >= Date.Now;
}
else if (value is DateTime)
{
var date = (DateTime)value;
return date >= DateTime.Now;
}
else if (value is DateTime?)
{
var date = (DateTime?)value;
return date.Value >= DateTime.Now;
}
else
{
return false;
}
}
---
2. update sana.validate.unobtrusive.js
$.validator.unobtrusive.adapters.add('lookupperiod', [], function (options) {
options.rules['lookupperiod'] = {};
if (options.message) {
options.messages['lookupperiod'] = options.message;
}
});
3. update sana.validate.js
$.validator.addMethod('lookupperiod', function (value, element, params) {
if (!value) {
return true;
}
var dateFormat = $(element).datepicker('option', 'dateFormat');
try {
var date = $.datepicker.parseDate(dateFormat, value);
var todayDate = (new Date()).setHours(0, 0, 0, 0);
return date >= todayDate;
}
catch (e) {
return false;
}
});
4. Apply the Attribute to the field
eg:
[LookupPeriodDateValidation(ErrorMessageResourceName = SanaTextKeys.InvalidField)]
[DisableDateValidation(ErrorMessageResourceName = SanaTextKeys.InvalidField)]
public override Date? DeliveryDate { get; set; }