2013-02-18 23 views
4

我仍然接近MVC。mvc驗證日期/時間至少在未來1分鐘內

我已經看到了幾個類似的問題,一些自定義代碼和各種方法,但我還沒有找到適合我的東西。

我有一個搜索模型,用局部視圖內的結果填充HTML表格。我在搜索結果模型中有:

public DateTime? BeginDateTime { get; set; } 

在控制器中設置爲DateTime.Now。用戶可以指定日期和時間來運行模型POST調用的搜索結果數據。

我想要做的是驗證用戶定義的日期/時間在未來至少1分鐘。如果這可以作爲客戶端驗證來完成,那麼它會更好,但只要它有效,我都會接受這些選項。

查看:

Begin update: @Html.TextBoxFor(o => o.BeginDateTime, new { id="txtBegin" }) 

感謝。

回答

7

創建一個新的屬性:

public class FutureDateAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     return value != null && (DateTime)value > DateTime.Now; 
    } 
} 

現在,在你的模型設置該屬性:

[FutureDate(ErrorMessage="Date should be in the future.")] 
public DateTime Deadline { get; set; } 
0

這是檢查選擇的日期是未來的另一個好方法。

public class FutureDate : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     DateTime dateTime; 
     var isValid = DateTime.TryParseExact(
     //Getting the value from the user. 
     Convert.ToString(value), 

     //We want the user to enter date in this format. 
     "d mmm yyyy", 

     //It checks if the culture is us-en 
     CultureInfo.CurrentCulture, 

     //Mosh has no idea what this does. 
     DateTimeStyles.None, 

     //Output parameter. 
     out dateTime); 

     return (isValid && dateTime > DateTime.Now); 
    } 
}