gpt4 book ai didi

asp.net-mvc-3 - 复杂的验证场景

转载 作者:行者123 更新时间:2023-12-02 02:21:45 25 4
gpt4 key购买 nike

我有一些复杂的验证场景需要一些帮助。

我有一个如下所示的 ViewModel:

public class FooModel {
public class BarModel {
public string Name {get;set;}
public DateTime? BirthDate {get;set;}
}

public List<BarModel> Bars {get;set;}

// 10 BarModels added in controller
public FooModel() { Bars = new List<BarModel>(); }

public bool Choose1 {get;set;}
public bool Choose2 {get;set;}
}

现在,根据 Choose1 的值,如果 Choose1 为真,我需要验证所有 BarModel 都具有数据集(需要验证),或者如果 Choose1 为假,则列表中的前两项将被忽略。

其次,如果 Choose2 为真,那么我只想收集 Bars 中每个项目的生日,而忽略 Name 属性。

我查看了自定义属性,但似乎没有将其应用于嵌套类并获取父类中的值的好方法。我也没有找到一种方法可以轻松地只验证集合中的某些项目。

有什么建议吗?

编辑:

我也考虑过 IValidatableObject,但如果可能的话,我对同样适用于客户端的解决方案感兴趣。还有其他选择吗?

最佳答案

通过实现 IValidatableObject 编写您自己的验证

public class FooModel : IValidatableObject {

public class BarModel {
public string Name {get;set;}
public DateTime? BirthDate {get;set;}
}

public List<BarModel> Bars {get;set;}

// 10 BarModels added in controller
public FooModel() { Bars = new List<BarModel>(); }

public bool Choose1 {get;set;}
public bool Choose2 {get;set;}

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Choose1)
{
// do your validation and return result if needed:
yield return new ValidationResult("The title is mandatory.");
}
// ...
}

}

关于asp.net-mvc-3 - 复杂的验证场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com