数据注释-基于代码中的条件删除EntityValidation
本文关键字:条件 EntityValidation 删除 代码 注释 于代码 数据 | 更新日期: 2023-09-27 18:26:36
我的模型中有一列是必需的
[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
"必需",无论ModelState
如何,都无法通过编程删除
否则我怎么能实现我想要的?
干杯
这在现有的RequiredAttribute
中是不可能的。
但是,您可以实现自己的自定义条件验证属性。
这里有一些链接可以引导您朝着正确的方向前进:
http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspxhttp://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspxhttp://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; }
}