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" })

谢谢。

mvc验证日期/时间在未来至少为1分钟

创建一个新属性:

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);
    }
}