我正在尝试根据列表中的其他字段验证字段
public class CustomerModel
{
public List<CustomerBrand> Brands { get; set; }
}
}
public class CustomerBrand
{
public int Priority { get; set; }
public bool Checked { get; set; }
}
如下所示,如果勾选了复选框,则在文本框中输入的值必须大于零。任何人都可以帮助解决方案,使模型和控制器之外的验证保持不变
我使用此方法使其工作,但希望能够指出违规行。
public class CustomerModel : IValidatableObject
{
public string Name { get; set; }
public List<CustomerBrand> Brands { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
foreach(var brand in Brands)
{
if(brand.Checked)
{
if(brand.Priority < 1)
{
yield return new ValidationResult("Priority must be greater than 1");
}
}
}
}
}
答案 0 :(得分:0)
这样的事情怎么样:
int x = 1;
foreach(var brand in Brands)
{
if(brand.Checked)
{
if(brand.Priority < 1)
{
yield return new ValidationResult("Item " + x.ToString() + " - Priority must be greater than 1");
}
}
x++;
}
如果您有办法通过列表中的位置以外的其他内容来引用项目,则可以使用该项目代替 x 。