2
我有一个包含HttpPostedFileBase类型属性的模型,并且我创建了一个自定义验证属性,该属性实现RequiredAttribute以进行一些验证。它在您创建模型时非常有效。但是,我不想在编辑模型时进行任何验证(编辑模型时可选的HttpPostedFileBase属性)。我如何制作它?如何使一个RequiredAttribute创建不用于编辑模型
我有一个包含HttpPostedFileBase类型属性的模型,并且我创建了一个自定义验证属性,该属性实现RequiredAttribute以进行一些验证。它在您创建模型时非常有效。但是,我不想在编辑模型时进行任何验证(编辑模型时可选的HttpPostedFileBase属性)。我如何制作它?如何使一个RequiredAttribute创建不用于编辑模型
您的属性是添加到类的属性的简单元数据。这个属性没有关于你对类所做的事情的信息,即如果你正在使用这个类来编辑或创建一个新的实体。
所以,答案是你不能直接在属性中做到这一点。因此,如果您正在编辑值,唯一的解决方案是“绕过”您使用它的属性。有几种选择:
ModelState
中删除属性错误。显然最简单的是1.您可以使用所有字段的基类,但是具有不同处理的基类,然后继承它用于创建或编辑。在使用MVC时,用不同模型表示相同的数据并不奇怪:查看模型,显示编辑器的模型,接收版本结果的模型...因此,使用几种不同的模型不是问题在所有。您可以使用AutoMapper
或ValueInjecter
来简化实体和模型之间的数据移动。
我用NotMapped标记了属性,以便它不会保存在数据库中,但仍然当属性为空时它会抛出异常。仅仅是因为它用我的验证属性(必需)标记? – user217648
什么时候抛出异常?有没有内部异常或附加信息?数据注释由几个不同的层使用,例如通过EF和MVC绑定。 – JotaBe