gpt4 book ai didi

c# - 数据注释 - 根据代码中的条件删除实体验证

转载 作者:行者123 更新时间:2023-11-30 17:46:19 25 4
gpt4 key购买 nike

我的模型中有一列是必需的

[Required(ErrorMessage = "The Name field is required")]
public string Name{ get; set; }

但是,是否只是在不同的条件下才需要。

因此,当满足正确条件时,我删除了 ModelState

if (Status_ID != 2 && Status_ID != 3)
{
ModelState.Remove("Name");
}

这行得通,但是当 EF 尝试保存实体时,我得到一个 EntityVaildationError,因为我猜我在属性上有 Data Annotation“Required”,它可以无论 ModelState

为何,都不会以编程方式取消

我还能怎样实现我想要的?

干杯

最佳答案

现有的 RequiredAttribute 不可能做到这一点。

但是,您可以实现自己的自定义条件验证属性。

以下是一些指导您正确方向的链接:

http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspx http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx http://blogs.msdn.com/b/simonince/archive/2011/09/29/mvc-validationtookit-alpha-release-conditional-validation-with-mvc-3.aspx

一旦您实现了自定义 RequiredIf 条件验证属性,您就可以像这样设置条件:

public class ValidationSample
{
[RequiredIf("PropertyValidationDependsOn", true)]
public string PropertyToValidate { get; set; }

public bool PropertyValidationDependsOn { get; set; }
}

关于c# - 数据注释 - 根据代码中的条件删除实体验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378176/

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