我仍然掌握MVC。
我看过几个类似的问题,一些自定义代码和各种方法,但我找不到适合我的东西。
我有一个搜索模型,用于填充HTML表格,其中包含部分视图内的结果。我在搜索结果模型中有这个:
public DateTime? BeginDateTime { get; set; }
在控制器中设置为DateTime.Now。用户可以指定在模型的POST调用中使用搜索结果数据运行任务的日期和时间。
我想要做的是确认用户定义的日期/时间至少为1分钟。如果这可以作为客户端验证完成,那将会更好,但只要它有效,我就会对选项持开放态度。
查看:
Begin update: @Html.TextBoxFor(o => o.BeginDateTime, new { id="txtBegin" })
感谢。
答案 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);
}
}