Ответ 1
[Display(Name = "Is Active")]
[Range(typeof(bool), "true", "true", ErrorMessage="The field Is Active must be checked.")]
public bool IsActive { get; set; }
У меня есть один класс модели, например:
public class Student
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Enrollment Date")]
public DateTime EnrollmentDate { get; set; }
[Required]
[Display(Name = "Is Active")]
public bool IsActive { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
Здесь я создал свойство Boolean
IsActive
с атрибутом Required
, но проблема в том, что мое представление не выполняет требуемую проверку для этого свойства? Я хочу связать это свойство с CheckBox
и проверить, проверен ли этот CheckBox
, и запустить проверку, если это не так.
Любое решение для этого?
[Display(Name = "Is Active")]
[Range(typeof(bool), "true", "true", ErrorMessage="The field Is Active must be checked.")]
public bool IsActive { get; set; }
Спасибо за вышеупомянутое решение, которое поставило меня в правильном направлении, но для меня это не сработало. Мне нужно добавить ниже script на страницу, которая расширяет проверку подлинности jquery, чтобы получить вышеупомянутое решение. Мысль делиться этим, если кто-то сталкивается с подобной проблемой.
<script>
// extend jquery range validator to work for required checkboxes
var defaultRangeValidator = $.validator.methods.range;
$.validator.methods.range = function(value, element, param) {
if(element.type === 'checkbox') {
// if it a checkbox return true if it is checked
return element.checked;
} else {
// otherwise run the default validation function
return defaultRangeValidator.call(this, value, element, param);
}
}
</script>
Позвольте мне добавить немного к Sonu K
сообщению
Если вы используете HTML-проверку на нем (<input type="checkbox" required/>
), это может привести к нарушению вашего javascript из-за того, что вы не смогли отправить пустое поле, заданное из вашей модели
Наконец, если вы не хотите, чтобы Is Active
добавлялся в базу данных при выполнении миграции (сначала код), просто добавьте [NotMapped]
Полный код
[NotMapped]
[Display(Name = "Is Active")]
[Range(typeof(bool), "true", "true", ErrorMessage="The field Is Active must be checked.")]
public bool IsActive { get; set; }
потому что он установлен как истинный по умолчанию в MVC, несмотря на то, что он будет отображаться в браузере, поэтому проверка может не работать так, как вы ожидаете, поэтому вам нужно добавить этот код javascript, чтобы улучшить проверку.
<script>
// extend jquery range validator to work for required checkboxes
var defaultRangeValidator = $.validator.methods.range;
$.validator.methods.range = function(value, element, param) {
if(element.type === 'checkbox') {
// if it a checkbox return true if it is checked
return element.checked;
} else {
// otherwise run the default validation function
return defaultRangeValidator.call(this, value, element, param);
}
}
</script>
Наслаждайтесь кодированием