我正在使用ASP.NET MVC创建一个项目。

我的模型类如下所示:

public class CaseInformation
{
    public int Id { get; set; }

    public string CaseNumber { get; set; }
    public string RitNumber { get; set; }
    public string ApilNumber { get; set; }

    public DateTime Date { get; set; }

    public double CaseInvolvedRevenue { get; set; }
    public string CaseShortDescription { get; set; }
    public string CaseUpdateStatus { get; set; }

    public CompanyDetails CompanyDetails { get; set; }
    public int CompanyDetailsId { get; set; }
}


在这里,CaseNumberRitNumberApilNumber仅需要1。我不能对所有这些都使用[Required]。我怎么做?请帮忙。

最佳答案

您可以在IValidatableObject类本身中实现CaseInformation接口。如下所示:

public class CaseInformation : IValidatableObject
{
    ...

    public IEnumerable<ValidationResult> Validate(ValidationContext ctx)
    {
        if (string.IsNullOrWhiteSpace(CaseNumber) &&
            string.IsNullOrWhiteSpace(RitNumber) &&
            string.IsNullOrWhiteSpace(ApilNumber))
        {
            yield return new ValidationResult("Your error message here.");
        }
    }
}


在执行模型验证时,框架会调用Validate(ValidationContext)方法。在这里,我们只是检查所有三个值是否都缺失,如果缺失,则通过返回带有自定义错误消息的ValidationResult来发出错误信号。

10-08 14:07