gpt4 book ai didi

c# - 基于另一个模型属性验证属性值

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:37 25 4
gpt4 key购买 nike

我有一个关于属性验证的问题,但是,我还没有找到合适的答案。

我有以下类(class)

public class IndexViewModel
{
public Film Film { get; set; }

public ReviewModel Review { get; set; }
}

public class ReviewModel
{
[RequiredIf // only fire if 'Genre' is equal to Genre.Horror]
public string Text { get; set; }
}

public class Film
{
public string Title { get; set; }
public Director Director { get; set; }
public Genre Genre { get; set; }
}

public class Director
{
public string Name { get; set; }
}

public enum Genre
{
Horror,
Thriller,
SciFi,
Drama
}

是否可以在 ReviewModelText 属性上添加一个 [RequiredIf] 属性,它根据 的值触发验证电影 模型中的>流派。任何帮助将不胜感激。

最佳答案

当需要验证的属性不在与其关联的类中时,我不建议使用验证属性。我还没有看到像这样跨模型的 RequiredIfAttribute 实现。 ( Here's a good one from a different question. )

IValidatableObject 的简单实现怎么样?这会很清楚,MVC 会在构建模型时检查它。

public class IndexViewModel : IValidatableObject
{
public Film Film { get; set; }

public ReviewModel Review { get; set; }

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Film.Genre == Genre.Horror && string.IsNullOrWhiteSpace(Review.Text))
{
yield return new ValidationResult(
"Please provide a review for this film.",
new string[] { nameof(Review.Text) });
}
}
}

关于c# - 基于另一个模型属性验证属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726604/

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