在下面的代码中,我想使用AttributeValidation来检查是否根据其父元素的属性来给出字段。班级中的评论
RequiredIfParentState1
最能描述我的问题。
public class ChildModel()
{
[RequiredIfParentState1]
public string ImRequired { get; set; }
}
public class ParentViewModel()
{
public int state { get; set; }
public ChildModel child = new ChildModel();
}
public class RequiredIfParentState1: ValidationAttribute, IClientModelValidator
{
RequiredIfParentState1()
{
}
void AddValidation(ClientModelValidationContext context)
{
}
protected override ValidationResult IsValid(object i_value, ValidationContext i_context)
{
var element = i_context.ObjectInstance;
if(i_value == null && //what do i have to put here to check if the state is 1?)
{
return new ValidationResult($"Field is Required in state 1.");
}
return ValidationResult.Success;
}
}
答案 0 :(得分:0)
我觉得这是错误的做法。
处于有效状态的对象是一回事(必填字段和类型检查),但是处理业务逻辑是另外一个问题。
您可以编写验证服务,该服务详细检查模型,检查业务逻辑问题并建立错误列表。
在发现错误的地方,您可以在响应中返回这些错误。