C# 使用DateTime值DataAnnotation限制过去的日期
我有一个MVC应用程序,其中我有一个带有日期属性的模型C# 使用DateTime值DataAnnotation限制过去的日期,c#,html,date,asp.net-mvc-4,datetime,C#,Html,Date,Asp.net Mvc 4,Datetime,我有一个MVC应用程序,其中我有一个带有日期属性的模型 [Required(ErrorMessage = "This is a required field.")] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")] [DataType(DataType.Date)] public DateTime EventDate { get; set; } 在我看来,我是这样说的 <div
[Required(ErrorMessage = "This is a required field.")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
[DataType(DataType.Date)]
public DateTime EventDate { get; set; }
在我看来,我是这样说的
<div class="col-sm-9">
<span style="color:black">@Html.EditorFor(model => model.EventDate)</span><br />
@Html.ValidationMessageFor(m => m.EventDate, "", new { @class = "text-danger" })
</div>
并使用它,但这会删除选择日期的选项
是否可以禁用此Datetime批注上的过去日期
非常感谢您的帮助
谢谢我想您的支票必须是日期时间。现在(未来日期“大于”今天)。因此,如果它是有效值,则需要返回true。@Styxxy我做了这些更改,它删除了用于选择日期的日历对话框窗口。尝试添加
min
属性:验证属性与表单控件在视图中的显示方式无关-它们用于验证值,如果无效,然后显示一条错误消息。您有[DataType(DataType.Date)]
与生成浏览器HTML-5日期选择器的EditorFor()
一起使用。这仅在Chrome和Edge中受支持,在FireFox中只呈现一个文本框。在任何情况下,它都必须是[DisplayFormat(DataFormatString=“{0:yyyy-MM-dd}”,ApplyFormatInEditMode=true)]
才能正常工作。如果您想要一致的UI并能够限制选择日期,请使用jQuery datepicker(例如,[jQuery UI]datepicker()。另外,您的属性没有提供客户端验证,因为它没有实现IClientValidable
-请参阅我认为您的检查必须是d>DateTime。现在
(未来日期“大于”今天)。因此,如果它是有效值,则需要返回true。@Styxxy我做了这些更改,它删除了用于选择日期的日历对话框窗口。尝试添加min
属性:验证属性与表单控件在视图中的显示方式无关-它们用于验证值,如果无效,则显示error消息。您有[DataType(DataType.Date)]
与EditorFor()
一起生成浏览器HTML-5日期选择器。这仅在Chrome和Edge中受支持,并且在FireFox中只呈现一个文本框。在任何情况下,它必须是[DisplayFormat(DataFormatString=“{0:yyyyy-MM-dd}”,ApplyFormatInEditMode=true)]
以正确工作。如果您想要一致的UI并能够限制选择日期,请使用jQuery日期选择器(例如[jQuery UI]datepicker()。另外,您的属性不会提供客户端验证,因为它没有实现IClientValidable
-请参阅
public class MyDateAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime d = Convert.ToDateTime(value);
return d > DateTime.Now;
}
}