在我的MVC應用程序,我有以下ViewModel
:如何應用自定義的驗證規則給視圖模型屬性在MVC3
public class MyViewModel
{
public int StartYear { get; set; }
public int? StartMonth { get; set; }
public int? StartDay { get; set; }
public int? EndYear { get; set; }
public int? EndMonth { get; set; }
public int? EndDay { get; set; }
[DateStart]
public DateTime StartDate
{
get
{
return new DateTime(StartYear, StartMonth ?? 1, StartDay ?? 1);
}
}
[DateEnd(DateStartProperty="StartDate")]
public DateTime EndDate
{
get
{
return new DateTime(EndYear ?? DateTime.MaxValue.Year, EndMonth ?? 12, EndDay ?? 31);
}
}
}
,因爲我需要的日期格式(還有一個我不使用日曆助手邏輯背後)。現在,我創建了自定義的驗證規則:
public sealed class DateStartAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dateStart = (DateTime)value;
return (dateStart > DateTime.Now);
}
}
public sealed class DateEndAttribute : ValidationAttribute
{
public string DateStartProperty { get; set; }
public override bool IsValid(object value)
{
// Get Value of the DateStart property
string dateStartString = HttpContext.Current.Request[DateStartProperty];
DateTime dateEnd = (DateTime)value;
DateTime dateStart = DateTime.Parse(dateStartString);
// Meeting start time must be before the end time
return dateStart < dateEnd;
}
}
的問題是,DateStartProperty
(在這種情況下StartDate
)是不是在Request
對象,因爲它的形式發佈到服務器後進行計算。因此dateStartString
始終爲空。我怎樣才能得到StartDate
的價值?
謝謝,但我正在尋找服務器端驗證。 – CiccioMiami