Некоторые пользователи могут не захотеть изменить бэкэнд для всех своих скриптов. Эта страница - http://matplotlib.org/faq/usage_faq.html#what-is-a-backend - говорит по-другому:
import matplotlib
matplotlib.use('TkAgg')
У вас есть для этого, прежде чем импортировать подпакет matplotlib
или сторонний пакет, который зависит от matplotlib
.
Вам не нужно менять атрибут [Range], так как [Range] и другие встроенные валидаторы DataAnnotations no-op при задании пустого значения. Просто сделайте свойство самого типа int? а не int. Неизменяемые свойства ValueType (например, int) всегда автоматически требуются.
Я думаю, вы могли бы переопределить объект Range
и добавить это поведение.
public class OptionalRange : RangeAttribute {
public override bool IsValid(object value) {
if (value == null || (int)value == 0) return true;
return base.IsValid(value);
}
}