问题描述
我正在学习 asp.net 课程,我是 c# 新手
我创建了一个具有日期输入字段的表单,它总是返回 无效消息 以下是输入代码:
<div class="form-group">
@Html.LabelFor(m => m.Date)
@Html.TextBoxFor(m => m.Date,new { @class = "form-control",placeholder="eg 1 Jan 2015" })
@Html.ValidationMessageFor(m => m.Date)
</div>
这是我为该输入字段创建的模型属性:
[required]
[FutureDate]
public string Date { get; set; }
这是出现问题的futuredate数据注释的代码:
public class FutureDate : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dateTime;
var isValid = DateTime.TryParseExact(Convert.ToString(value),"d MMM YYYY",CultureInfo.CurrentCulture,DateTimeStyles.None,out dateTime);
return (isValid && dateTime > DateTime.Now);
}
}
虽然我在调试时注意到 datetime 变量没有更新 使用输入字段值并返回 {01/01/0001 12:00:00}
解决方法
年份说明符是小写的。请参阅 docs 以供参考。
var isValid = DateTime.TryParseExact(Convert.ToString(value),"d MMM yyyy",CultureInfo.CurrentCulture,DateTimeStyles.None,out dateTime);