C# mvc验证日期/时间至少为1分钟

C# mvc验证日期/时间至少为1分钟,c#,asp.net-mvc,validation,C#,Asp.net Mvc,Validation,我仍然在争取MVC 我见过几个类似的问题,一些自定义代码和各种方法,但我没有找到适合我的方法 我有一个搜索模型,在局部视图中用结果填充HTML表。我的搜索结果模型中有以下内容: public DateTime? BeginDateTime { get; set; } 设置为DateTime。现在在控制器中。用户可以使用模型的POST调用上的搜索结果数据指定运行任务的日期和时间 我想做的是验证用户定义的日期/时间在将来至少为1分钟。如果这可以作为一个客户端验证来完成,那会更好,但只要它有效,我愿

我仍然在争取MVC

我见过几个类似的问题,一些自定义代码和各种方法,但我没有找到适合我的方法

我有一个搜索模型,在局部视图中用结果填充HTML表。我的搜索结果模型中有以下内容:

public DateTime? BeginDateTime { get; set; }
设置为DateTime。现在在控制器中。用户可以使用模型的POST调用上的搜索结果数据指定运行任务的日期和时间

我想做的是验证用户定义的日期/时间在将来至少为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);
    }
}

将来,您应该显示所需的模块
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);
    }
}