Asp.net-Mvc
沒有到 100 之間的範圍註釋?
我有一個如下所示的 [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); } }