Asp.net-Mvc

沒有到 100 之間的範圍註釋?

  • January 16, 2019

我有一個如下所示的 [Range] 註釋:

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

我的網頁如下所示:

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

它可以正常工作,我只能輸入 0 到 100 之間的值,但我也希望輸入框是可選的,如果輸入框為空,使用者不應該收到驗證錯誤。這與範圍無關,而是因為類型是整數。如果使用者將其留空,則應使 AvailabilityGoal = 0,但我不想強制使用者輸入零。

我試過了,但它(顯然)沒有用:

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

是否可以通過數據註釋或其他方式解決這個問題?

提前致謝。

鮑比

您不必更改 [Range] 屬性,因為 [Range] 和其他內置 DataAnnotations 驗證器在給定空值時是無操作的。只需將屬性本身設為 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);
   }
}

引用自:https://stackoverflow.com/questions/2913281