MVC FoolProof Validation 在调用 SaveChange 方法时显示异常

MVC FoolProof Validation showing exception while calling SaveChange method

这个问题听起来可能有些重复,但我对任何答案都不满意,因为有些人建议 MVC Foolproof validaiton 进行条件验证,有些人则表示它不适用于 entity framework

我在我的 project.It 中使用 MVC Foolproof RequiredIf validation 在客户端运行良好,验证也在服务器端运行。

 [RequiredIf("STCompulsory",Operator.EqualTo,true,ErrorMessage="Please enter Registration No")]
    public string STRegNo { get; set; }

但是当我调用 db.Savechanges() 插入数据时出现异常

An unexpected exception was thrown during validation of 'STRegNo' when invoking 
Foolproof.RequiredIfAttribute.IsValid. See the inner exception for details.

InnerException

The method or operation is not implemented.

您不需要 Operator.EqualTo 参数,它可以只是

[RequiredIf("STCompulsory", true, ErrorMessage="Please enter Registration No")
public string STRegNo { get; set; }

您说得对,万无一失的 [RequiredIf] 属性在 EF 中确实存在一些问题,this work issue 中对此进行了详细讨论(以及一些建议的更改)。

最简单的解决方案是在视图中使用视图模型而不是数据模型,并将属性应用于视图模型属性。