我想知道如何在DateTime属性上设置条件要求。也就是说,除了检查这个必填字段是否为空之外,我希望输入(在cshtml文件中)不迟于今天的3周。
型号:
[DataType(DataType.Date)]
[Display(Name = "Start date"), Required(ErrorMessage = ValidationMessages.IsRequired)]
//[What else here for this condition??]
public DateTime StartDate { get; set; }
.cshtml:
<div class="form-group">
<div class="editor-label">
@Html.LabelFor(model => model.Assignment.StartDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Assignment.StartDate)
@Html.ValidationMessageFor(model => model.Assignment.StartDate)
</div>
</div>
这样的条件表达式怎么样?我需要在模型中添加除条件之外的东西吗?
如果我的描述太少,请说出来。
// 提前致谢,问候
答案 0 :(得分:0)
您可以在模型中执行此操作。添加正确的错误消息。
[Required(ErrorMessage = "")]
[Range(typeof(DateTime), DateTime.Now.ToString(), DateTime.Now.AddDays(21).ToString(), ErrorMessage = "" )]
public DateTime StartDate { get; set; }
答案 1 :(得分:0)
您可以创建自己的验证属性,如下所示:
1)具有自定义错误消息的自定义验证属性
public class CheckInputDateAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var inputDate = (DateTime)value;
var compareDate = DateTime.Now.AddDays(21);
int result = DateTime.Compare(inputDate, compareDate);
const string sErrorMessage = "Input date must be no sooner than 3 weeks from today.";
if (result < 0)
{
return new ValidationResult(sErrorMessage);
}
return ValidationResult.Success;
}
}
然后像
一样使用它 [DataType(DataType.Date)]
[CheckInputDate]
public DateTime StartDate { get; set; }
2)没有自定义错误消息的自定义验证属性
public class CheckInputDateAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var inputDate = (DateTime)value;
var compareDate = DateTime.Now.AddDays(21);
int result = DateTime.Compare(inputDate, compareDate);
return result >= 0;
}
}
然后像
一样使用它 [DataType(DataType.Date)]
[Display(Name = "Start date")]
[CheckInputDate]
public DateTime StartDate { get; set; }