0

我想编写一个自定义 ValidationAttribute 来检查给定值是否唯一。

问题是在编辑屏幕中,不能保证用户实际更改了值,从而导致错误错误。

有没有办法检查我的属性值是否真的改变了?或者我可以仅在值更改时触发属性吗?

我感觉这个要求可能不属于一个属性?

4

1 回答 1

1

当您说 ValidationAttibute 时,您的意思是使用 DataAnnotations 吗?如果是这样,那么所有这些都适用,否则,对不起,我误解了,只有部分适用。

我认为您最好的选择是在存储库或 BLL 中使用您的唯一密钥进行记录,至少我是这样做的。获取记录的先前值并查看它们是否更改。如果他们确实改变了,那么运行你的唯一性检查。

如果您可以将此逻辑放入 ValidationAttribute 中,那么您将获得更多权力,但我不确定 validationAttribute 是否是最好的,因为有办法绕过它们。根据我对这些属性的理解,您应该仅将它们用作业务逻辑验证的补充,而不是作为验证模型的唯一方式。

有关 DataAnnotations 的更多信息,请参见此处

编辑:很公平,现在让我们看看我是否可以给出帮助您的答案:) 查看此链接,它是用于对任何表中的任何属性进行唯一性检查的代码。相当深入的 LINQ to SQL 的东西,但看起来效果很好。您应该能够使用它来装饰任何属性,就像使用<Required>or<StringLenght>属性一样。

ASP.NET 论坛

于 2010-05-25T20:23:12.447 回答