C# MVC4中两个变量的RequiredIf条件验证
我有一个下面的模型类C# MVC4中两个变量的RequiredIf条件验证,c#,asp.net-mvc-4,model,required-field,foolproof-validation,C#,Asp.net Mvc 4,Model,Required Field,Foolproof Validation,我有一个下面的模型类 public bool Saturday{ get; set; } public bool Sunday{ get; set; } public string Holiday{ get; set; } [RequiredIf("Sunday,Saturday",false)] public string Holiday{ get; set; } 在其中,我希望对假日字段使用RequiredIf条件,同时使用Saturday和Sunday字段。我可以
public bool Saturday{ get; set; }
public bool Sunday{ get; set; }
public string Holiday{ get; set; }
[RequiredIf("Sunday,Saturday",false)]
public string Holiday{ get; set; }
在其中,我希望对假日字段使用RequiredIf条件,同时使用Saturday和Sunday字段。我可以用下面的方法吗
public bool Saturday{ get; set; }
public bool Sunday{ get; set; }
public string Holiday{ get; set; }
[RequiredIf("Sunday,Saturday",false)]
public string Holiday{ get; set; }
所以我不知道如何在我的模型类中使用RequiredIf条件,所以请有人帮助我我的项目中有RequiredIf
[Required]
public int SalesID { get; set; }
[RequiredIf("SalesID==1", ErrorMessage = "License is required.")]
public string License{ get; set; }
仅当SalesID为1时,许可证为空时,才会显示错误消息“License is required.”。如果SalesID为1,则许可证不能为空
对于您的代码,它应该是
[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;
}
}
public类YourModel:IValidatableObject
{
公共学校星期六{get;set;}
公共布尔星期日{get;set;}
公共字符串Holiday{get;set;}
公共IEnumerable验证(ValidationContext ValidationContext)
{
var result=新列表();
如果(星期六==false&&Sunday==false&&string.IsNullOrEmpty(假日))
{
结果。添加(新的ValidationResult(“周末以外需要休假”);
}
返回结果;
}
}
如果您将属性检查与IValidatableObject相结合,请务必注意。您可以在MVC中创建自己的自定义验证属性。此链接将帮助您创建这些属性。您是指万无一失的
RequiredIf
属性吗?(如果是,添加标记)我添加了标记,但不起作用。您能给出使用万无一失的RequiredIf属性的示例代码吗@Stephen MueckeNo,我的意思是问题底部的标签列表(如果您使用的是万无一失的),如果不是,那么您使用的是什么RequiredIf
属性?我不太清楚,因为我是.Net Mvc的初学者。并且RequiredIfAttribute类用于它。另外,通过使用System.ComponentModel.DataAnnotations,我已经完成了该属性。如果您知道解决方案,请帮助我@Stephen MueckeIt显示“不包含带1个参数的构造函数”@SukanyaAllowEmptyStrings不被接受,即以下类型被接受但不起作用。[RequiredIf(“星期日,星期六”,false)]请提供有关错误的更多详细信息。请参见RequiredIf属性的重载。