Сценарий теперь отображается в нижней части сгенерированного HTML, однако, похоже, он не влияет на ошибку проверки, которая появляется в форме.
На основе кода, который вы при условии, я подозреваю, что он может не доходить до if ($(element).attr('data-val-date'))
блока кода, который из-за того, что ваша настроенная функция проверки на стороне клиента не работает должным образом.
Пожалуйста, проверьте исходный код соответствующего элемента и убедитесь, что он имеет атрибут data-val-date
.
Кроме того, если элемент не включает data-val-date="true"
, как показано ниже, вы можете изменить код, как показано ниже, чтобы сделать возможным получение фрагмента кода (в пределах блока условия), пока функция запускается этим параметром c элемент.
Свойство StartDateTime
[Range(typeof(DateTime), "1/1/2020", "2/29/2020")]
public DateTime StartDateTime { get; set; }
Html исходный код этого параметра c элемент
Модифицированный код для проверки, является ли текущий элемент указанным c элементом с if $(element).attr('id') == "StartDateTime")
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script>
$.validator.methods.range = function (value, element, param) {
//console.log(param);
if ($(element).attr('id') == "StartDateTime") {
var min = $(element).attr('data-val-range-min');
var max = $(element).attr('data-val-range-max');
var date = new Date(value).getTime();
var minDate = new Date(min).getTime();
var maxDate = new Date(max).getTime();
console.log(minDate + " | " + maxDate + " | " + date);
return this.optional(element) || (date >= minDate && date <= maxDate);
}
// use the default method
return this.optional(element) || (value >= param[0] && value <= param[1]);
}
</script>
}