2012-01-13 23 views
12

benim modelinde bu DateTime özelliği vardır: Ben kullanıcı bugünden önce oluşan bir tarih giremezsiniz böylece bu özellik doğrulanması istiyorumveri Ek açıklamalar içeren DateTime değeri sınırla

[Required(ErrorMessage = "Expiration Date is required")] 
[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] 
[DisplayName("Expiration Date")] 
public DateTime? ExpirationDate { get; set; } 

. Bir tamsayı doğrularsam bunu yapabilirdim.

Ancak, aralık özniteliği bir DateTime nesnesini desteklemiyor. DateTime değeri için böyle bir şey var mı?

+0

olası yinelenen: http://stackoverflow.com/questions/1406046/data-annotation-ranges-of-dates –

+0

Ya da bu ilgili soruya gelen cevaplar belki bir: http://stackoverflow.com/ soruları/5390403/datetime-date-ve-hour-validasyon-with-data-açıklama –

+0

Bunun% 100 emin değilim ama belki de MSDN DateTimeRangeValidator: http://msdn.microsoft.com/en-us/ library/ff649440.aspx –

cevap

32

Bu size yardımcı olacaktır.

public class MyDateAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value)// Return a boolean value: true == IsValid, false != IsValid 
    { 
     DateTime d = Convert.ToDateTime(value); 
     return d >= DateTime.Now; //Dates Greater than or equal to today are valid (true) 

    } 
} 

Şimdi bu özniteliği Model özelliğinize uygulayın.

public class SomeModel 
    { 
     [Display(Name = "Date of birth")] 
     [MyDate(ErrorMessage ="Invalid date")] 
     public DateTime DateOfBirth { get; set; } 
    } 
+2

[MyDate (ErrorMessage = "Mesajınız burada")] olarak kullanabilirsiniz – Parminder

İlgili konular