我想编写一个自定义ValidationAttribute来检查给定值是否唯一。
问题是在编辑屏幕中,无法保证用户实际更改了值,从而导致错误。
有没有办法检查我的属性值是否实际更改?或者我可以仅在值发生变化时触发属性吗?
我觉得这个要求可能只是属于一个属性吗?
答案 0 :(得分:1)
当您说ValidationAttibute时,您的意思是使用DataAnnotations吗?如果是这样,那么所有这些都适用,否则,抱歉,我误解了,只有部分内容会发生。
我认为你最好的选择是在存储库或BLL中使用你的唯一密钥进行记录,至少这是我做的。获取记录的先前值并查看它们是否已更改。如果他们确实发生了变化,那么就进行唯一性检查。
如果你可以将这个逻辑带入ValidationAttribute,那么对你有更多的权力,但我不确定validationAttribute是否是最好的东西,因为有办法解决它们。根据我对这些属性的理解,您应该仅将它们用作业务逻辑验证的补充,而不是验证模型的唯一方法。
See here for more info on DataAnnotations
编辑:
很公平,现在让我们看看我是否能给出答案来帮助你:)看看这个链接,它是任何表中任何属性的唯一性检查代码。非常深入的LINQ to SQL内容,但看起来效果很好。您应该可以使用<Required>
或<StringLenght>
属性来装饰任何属性。