5

我仍然在使用 MVC。

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

我有一个搜索模型,它用部分视图内的结果填充 HTML 表。我的搜索结果模型中有这个:

public DateTime? BeginDateTime { get; set; }

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

我想做的是验证用户定义的日期/时间至少是未来 1 分钟。如果这可以作为客户端验证来完成,那会更好,但只要它有效,我就可以选择。

看法:

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

谢谢。

4

2 回答 2

14

创建一个新属性:

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; }
于 2013-07-29T19:29:17.153 回答
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);
    }
}
于 2016-08-25T02:32:51.403 回答