c# - ASP.NET MVC DataAnnotation 需要 3 个属性中的 1 个

标签 c# asp.net-mvc entity-framework data-annotations

我正在使用 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 类本身中的接口(interface)。它看起来像这样:

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 来发出错误信号。

关于c# - ASP.NET MVC DataAnnotation 需要 3 个属性中的 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728856/

相关文章:

c# - Regex.Matches 每行返回一个匹配项,而不是每个 "word"

c# - 如何查看系统音频是否静音?

asp.net-mvc - ASP.NET MVC 2 中的动态范围验证

entity-framework - 切换分支以及如何首先使用 EF 代码重置数据库

c# - 更新查询时出错 - Visual Studio 2010 - Oracle 11g Express 版

javascript - Reactjs .NET 中的函数永远无法实现 - 如何在渲染中调用简单的箭头函数?

asp.net-mvc - 在 Razor View 中使用 Spark 主布局

.net - 如何让 "Programming Entity Framework: DbContext"示例运行?

entity-framework - Automapper 和 Entity Framework

c# - 在 Azure 函数中读取包含 pdf 的请求正文时出错