MVC4中两个变量的RequiredIf条件验证

RequiredIf Conditional Validation for two variables in MVC4

我有一个模特 class 正在关注

 public bool Saturday{ get; set; }

 public bool Sunday{ get; set; }

 public string Holiday{ get; set; }

我想在其中使用星期六和星期日字段为假日字段使用 RequiredIf 条件。我可以像下面那样使用

   [RequiredIf("Sunday,Saturday",false)]
   public string Holiday{ get; set; }

所以我不知道如何在我的模型中使用 RequiredIf 条件 class,所以请有人帮助我

我的项目中有 RequiredIf。

[Required]
public int SalesID { get; set; }

[RequiredIf("SalesID==1", ErrorMessage = "License is required.")]
public string License{ get; set; }

仅当 SalesID 为 1 时 License 留空时显示错误消息 'License is required.'。如果 SalesID 为 1,License 不能为空。

对于您的代码,它应该类似于

[RequiredIf("Sunday,Saturday",AllowEmptyStrings=false)]
public string Holiday{ get; set; }

这意味着如果星期日和星期六为真,您可以允许假日 属性 为空字符串。

也许在你的模型中试试这个:

[Required]
public bool Saturday{ get; set; }

[Required]
public bool Sunday{ get; set; }

[NotMapped]
public bool SatSun
{
    get
    {
        return (!this.Saturday && !this.Sunday);
    }
}

[RequiredIf("SatSun",true)]
public string Holiday{ get; set; }

如果需要进行更复杂的验证,我建议实施 IValidatableObject。

public class YourModel : IValidatableObject
{
    public bool Saturday{ get; set; }

    public bool Sunday{ get; set; }

    public string Holiday{ get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        var result = new List<ValidationResult>();

        if (Saturday == false && Sunday == false && string.IsNullOrEmpty(Holiday))
        {
            result.Add(new ValidationResult("Holiday is required outside weekends"));
        }

        return result;
    }
}

如果将 属性 检查与 IValidatableObject 结合使用,请务必注意 this behaviour.