12

我有一个模型类正在关注

 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条件,所以请有人帮助我

4

3 回答 3

16

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

[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; }
于 2015-02-05T15:15:35.053 回答
1

如果需要更复杂的验证,我建议实施 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 结合使用,请务必注意此行为

于 2020-07-15T08:00:28.597 回答
-1

我的项目中有RequiredIf。

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

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

它显示错误消息“需要许可证”。仅当 SalesID 为 1 时,License 为空。如果 SalesID 为 1,License 不能为空。

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

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

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

于 2015-02-05T09:38:42.370 回答