我的模型中有一列是必需的
[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
我怎样才能实现我的目标?
干杯
答案 0 :(得分:1)
现有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; }
}