Аннотация диапазона ни между чем и 100?

У меня есть [Диапазон] аннотация, которая похожа на это:

[Range(0, 100)]
public int AvailabilityGoal { get; set; }

Моя веб-страница похожа на это:

<%=Html.TextBoxFor(u => u.Group.AvailabilityGoal)%>

Это работает, как это должно, я могу только ввести значения между 0 и 100, но я также хочу, чтобы поле ввода было дополнительным, пользователь не должен получать ошибку проверки, если поле ввода пусто. Это не имеет никакого отношения к диапазону, но потому что тип является целым числом. Если пользователь оставляет это пустым, это должно сделать AvailabilityGoal = 0, но я не хочу вынуждать пользователя ввести нуль.

Я попробовал это, но это (очевидно), не работало:

[Range(typeof(int?), null, "100")]

Действительно ли возможно решить это с Аннотированиями данных или некоторым другим способом?

Заранее спасибо.

Bobby

16
задан Bobby 26 May 2010 в 13:56
поделиться

2 ответа

Вам не нужно менять атрибут [Range], поскольку [Range] и другие встроенные валидаторы DataAnnotations не работают, когда им дается пустое значение. Просто сделайте само свойство типа int?, а не int. Свойства ValueType без нулевого значения (например, int) всегда автоматически требуются.

23
ответ дан 30 November 2019 в 21:10
поделиться

Я думаю, вы могли бы переопределить объект Range и добавить это поведение.

public class OptionalRange : RangeAttribute {
    public override bool IsValid(object value) {
        if (value == null || (int)value == 0) return true;
        return base.IsValid(value);
    }
}
5
ответ дан 30 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: