Я пытаюсь написать очень простой Data Annotation Validator для моей модели MVC MVC MVC. Когда применяется в поле datetime, валидатор должен проверить, является ли год даты текущим годом или нет. Серверная часть работает как intented, но на сторону клиента, кажется, не вызывает (другие валидатор, как диапазон или необходимые работы)ASP.NET MVC Custom Validator не запускает
стороны сервера:
class CurrentYearAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
if(value == null)
{
return false;
}
var date = (DateTime)value;
return (date.Year == DateTime.Now.Year);
}
public override string FormatErrorMessage(string name)
{
return "Le champ " + name + " doit être de l'année en cours.";
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule()
{
ValidationType = "currentyear",
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
};
yield return rule;
}
}
сторона клиента:
<script type="text/javascript">
$(document).ready(function() {
$.validator.addMethod(
'currentyear',
function (value, element, params) {
alert("hello"); // never
return (Date.parse(value).getFullYear() == (new Date()).getFullYear());
});
$.validator.unobtrusive.adapters.addBool("currentyear");
//$.validator.unobtrusive.parse("form");
});
</script>