mvc验证日期/时间在未来至少为1分钟
本文关键字:1分钟 未来 验证 日期 时间 mvc | 更新日期: 2023-09-27 17:59:52
我仍在掌握MVC。
我看到了几个类似的问题,一些自定义代码和各种方法,但我没有找到适合我的东西
我有一个搜索模型,它在部分视图中用结果填充HTML表。我在我的搜索结果模型中有这个:
public DateTime? BeginDateTime { get; set; }
设置为DateTime。现在在控制器中。用户可以指定在模型的POST调用中使用搜索结果数据运行任务的日期和时间。
我想做的是验证用户定义的日期/时间在未来是否至少为1分钟。如果这可以作为客户端验证来完成,那会更好,但只要它有效,我对选项持开放态度。
视图:
Begin update: @Html.TextBoxFor(o => o.BeginDateTime, new { id="txtBegin" })
谢谢。
创建一个新属性:
public class FutureDateAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return value != null && (DateTime)value > DateTime.Now;
}
}
现在在你的模型中设置这个属性:
[FutureDate(ErrorMessage="Date should be in the future.")]
public DateTime Deadline { get; set; }
这是检查所选日期是否来自未来的另一个好方法。
public class FutureDate : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dateTime;
var isValid = DateTime.TryParseExact(
//Getting the value from the user.
Convert.ToString(value),
//We want the user to enter date in this format.
"d mmm yyyy",
//It checks if the culture is us-en
CultureInfo.CurrentCulture,
//Mosh has no idea what this does.
DateTimeStyles.None,
//Output parameter.
out dateTime);
return (isValid && dateTime > DateTime.Now);
}
}