モデルがあるRazor Webページがあります
public class UploadModel
{
[Required]
[StringLength(25)]
public string PatientID { get; set; }
[DataType(DataType.Date)]
[DateRange("1000/12/01", "4010/12/16")]
public DateTime DrawDate { get; set; }
}
public class DateRangeAttribute : ValidationAttribute
{
private const string DateFormat = "yyyy/MM/dd";
private const string DefaultErrorMessage =
"'{0}' must be a date between {1:d} and {2:d}.";
public DateTime MinDate { get; set; }
public DateTime MaxDate { get; set; }
public DateRangeAttribute(string minDate, string maxDate)
: base(DefaultErrorMessage)
{
MinDate = ParseDate(minDate);
MaxDate = ParseDate(maxDate);
}
public override bool IsValid(object value)
{
if (value == null || !(value is DateTime))
{
return true;
}
DateTime dateValue = (DateTime)value;
return MinDate <= dateValue && dateValue <= MaxDate;
}
public override string FormatErrorMessage(string name)
{
return String.Format(CultureInfo.CurrentCulture,
ErrorMessageString,
name, MinDate, MaxDate);
}
private static DateTime ParseDate(string dateValue)
{
return DateTime.ParseExact(dateValue, DateFormat,
CultureInfo.InvariantCulture);
}
}
それは日時の検証を行います
ただし、ビューでは、モデル内のすべての要素を実行すると
@Html.EditorFor(m => m)
クロスブラウザであるため、jqueryを使用してカレンダーの日付を選択しているため、問題を引き起こす日時型を作成しています。検証クラスを使用しても日時を強制的にテキストにする方法はありますか? ありがとう!