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

时间:2013-02-18 21:25:05

标签: c# asp.net-mvc validation

我仍然掌握MVC。

我看过几个类似的问题,一些自定义代码和各种方法,但我找不到适合我的东西。

我有一个搜索模型,用于填充HTML表格,其中包含部分视图内的结果。我在搜索结果模型中有这个:

public DateTime? BeginDateTime { get; set; }

在控制器中设置为DateTime.Now。用户可以指定在模型的POST调用中使用搜索结果数据运行任务的日期和时间。

我想要做的是确认用户定义的日期/时间至少为1分钟。如果这可以作为客户端验证完成,那将会更好,但只要它有效,我就会对选项持开放态度。

查看:

Begin update: @Html.TextBoxFor(o => o.BeginDateTime, new { id="txtBegin" })

感谢。

2 个答案:

答案 0 :(得分:9)

创建一个新属性:

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

答案 1 :(得分:0)

这是另一种检查所选日期是否来自未来的好方法。

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