2016-10-13 104 views
0

如果我在BirthDate屬性之前在模型中擁有此代碼,那麼我如何允許用戶只輸入舊日期?客戶端驗證:僅允許來自日曆的舊日期

[DataType(DataType.Date)] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")] 
public System.DateTime BirthDate { get; set; } 

這可以在不使用JavaScript的情況下實現嗎?如果是,如何?

+0

你說的舊日期是什麼意思? – Botonomous

+0

你可以使用這個http://stackoverflow.com/questions/17321948/is-there-a-rangeattribute-for-datetime – Emil

+0

你的意思是如果你有一個財產的生日和用戶輸入日期,即11/12/1995。如果用戶想要編輯生日,他們可以輸入日期少於11/12/1995即10/12/1994? – dijam

回答

0

您應該擴展RangeAttribute以裝飾DateTime模型字段。

你可能例如創建一個新的驗證屬性:BirthDateAttribute

public class BirthDateAttribute : RangeAttribute { 

    public BirthDateAttribute() 
        : base(
          typeof(DateTime), 
          DateTime.Now.AddYears(-120).ToShortDateString(), 
          DateTime.Now.AddDays(-1)ToShortDateString() 
        ) { } 
} 

,然後就可以用它來裝飾你的DateTime屬性:

[BirthDateAttribute] 
[DataType(DataType.Date)] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")] 
public System.DateTime BirthDate { get; set; } 
+0

如果我使用MVC,我在哪裏編寫此自定義驗證器用EF? –

+0

無處不在,但我建議您在模型文件夾中寫入一個子文件夾ValidationExtension,並在其中添加類文件BirthDateAttribute.cs ..使用模型的相同名稱空間。然後用新屬性修飾你的模型 –