【发布时间】:2015-03-26 00:46:15
【问题描述】:
我想根据多个字段的值验证模型。我的模型如下所示:
public class CreateStudentEventViewModel : IValidatableObject
{
[Required]
public DateTime StartDate { get; set; }
public DateTime? EndDate { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
public bool HasTimes { get; set; }
public bool IsMilestone { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
// some other random test
if (this.IsMilestone)
{
if (this.EndDate != null)
results.Add(new ValidationResult("Event is a milestone but has an end date selected."));
}
if (this.HasTimes)
{
if (this.StartTime == null)
results.Add(new ValidationResult("Event has times, but no start time was selected."));
if (this.EndTime == null)
results.Add(new ValidationResult("Event has times, but no end time was selected."));
}
return results;
}
}
所以在服务器端,Validate() 方法中的代码将被运行。但是我怎样才能以某种方式将其翻译到客户端呢?我是否必须以某种方式将其重写为 jQuery 验证的自定义规则?
【问题讨论】:
-
您需要创建自己的属性,该属性继承自
ValidationAttribute并实现IClientValidatable。 This article 可能会帮助您入门。但是您也可以查看foolproof,它有许多有用的验证属性可以解决您的需求,例如[RequiredIfTrue("IsMilestone")应用于EndDate属性 -
@StephenMuecke 您的评论,尤其是最后一部分,很好地回答了我的问题 - 您是否考虑将其添加为答案以便我接受?
标签: jquery asp.net-mvc unobtrusive-validation