我想在文本框內輸入日期時間作爲字符串。其實有兩個輸入字段使用註釋進行時間驗證
- 從時間
- 要時間
兩個應該是像00:00格式,所以我可以進入
從時間00:00
要時間23:59
如何驗證用戶輸入在asp.net mvc viewmodel使用註釋,所以我可以限制用戶最小值爲00:00
,最大值爲23:59
?
我想在文本框內輸入日期時間作爲字符串。其實有兩個輸入字段使用註釋進行時間驗證
兩個應該是像00:00格式,所以我可以進入
從時間00:00
要時間23:59
如何驗證用戶輸入在asp.net mvc viewmodel使用註釋,所以我可以限制用戶最小值爲00:00
,最大值爲23:59
?
你可以創建一個自定義屬性,你可以用你的裝飾屬性。
namespace JensB.Tools.CustomAttributes
{
public class IsDateOk: ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null) return false;
if (value.GetType() != typeof(DateTime)) throw new InvalidOperationException("can only be used on DateTime properties.");
bool isValid = // do validation here
return isValid;
}
}
}
然後,您可以裝飾你的財產是這樣的:
[IsDateOk(ErrorMessage="Dates must be .....")]
public property DateTime MyTime {get; set ;}
約這樣做的好處是,你基本上不需要對前端的任何代碼,只是需要顯示@Html.ValidationMessageFor(x=> ....)
到使這項工作
使用正則表達式,你可以驗證你的模型,以及客戶端驗證也與這個工作就像
[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9] (am|pm|AM|PM)$", ErrorMessage = "Error message")]
public string FromTime {get;set;}
「日期」驗證來自哪裏?這聽起來像你只有一個時間價值,而不是日期。你爲什麼要防止進入午夜?這對我來說聽起來像是一個不好的驗證規則 - 如果你正在談論的事情*會在午夜開始(或結束)? –
你是對的,它應該在00:00到23:59的範圍內。編輯。 – user1765862